Beyond the price of the phone, there's a $30 fee for starting service and you have to wait 30 days and pay for a month's worth of service before you can terminate the contract. I got pretty far down the path of buying a new one from AT&T with the intention of breaking the contract but when I looked at all the fees and conditions, I gave up and bought one from someone on Craigslist for $400 for a white 16GB 3G.
With a new iPhone on the way soon, one would think that there are likely to be a lot of 3G iPhone's for sale on Ebay and craigslist soon from those people who have to have the new thing. I would guess that prices will drop.