Transferring domains doesn't need to cost another year's registration -- I haven't checked into this for GoDaddy/others, but for NameCheap I know you can "Push Account to User" instead of making them pay to transfer it.
If you're giving a domain, ask the recipient for their NameCheap username, and the authorization code from their push settings (My Account => Manage Profile => Push Settings).
Then go to My Account => Manage Domains => (click the domain) => Push Domain To User
If you're receiving a domain that's already on NameCheap (in the whois info, it'll show with Registrar "ENOM, INC" but -- further down... -- with Reseller "NAMECHEAP.COM"), you can speed things along by providing your own username and authorization code.