AT&T finally does something friendly. You can unlock your iPhone (including iPhone 4S) by submitting an online form to them.
I requested to have my iPhone 4S (in contract 10 months) unlocked and they confirmed it within 2 hours in email.
Good luck!