Cult of Mac has an interesting article pointing out how to upgrade to the 3GS without paying the full unsubsidized fee:
If you choose this option you are looking at adding approximately $120 to AT&T’s subsidized prices as well as the $18 account setup fee that AT&T charges. Your overall cost for the 16GB iPhone 3G S should be approximately $337 and the 32 GB $437 — a saving of $262 in both cases.
Can’t wait ’til the 3GS is out.