Make sure domain is unlocked and not within 60 day holding period (on new regs).
Login to your 1&1 account and click on the domain you want to transfer.
When it loads click on Manage Domains, then click on link that says Edit Domain Settings.
Look for Authorization code and make sure Domain Transfer lock is disabled.
Initiate transfer from GoDaddy and confirm all of the emails to begin process. You should receive confirmation from GoDaddy and another from 1&1 alerting you of the transfer and it will give a estimated time to complete. 1&1 takes about 5-6 days for transfer to complete.
After transfer is completely done and your domain shows up in GoDaddy, then make sure you CANCEL the contract in 1&1 so they don't bill you for the hosting package when it renews.