I personally hate AT&T with a passion. But for 2 years it has been an necessary evil for having an iPhone. Not only does AT&T give you no service in Manhattan between the normal working hours of 9am to 5pm, but it charges and arm and a leg for international calls from your cell phone. One alternative could be Skype, but the evil AT&T has colluded with Apple to only allow Skype calls over WiFi.
Recently, Google Voice came out of beta and is now available to all within the U.S. You can do a lot with Google Voice, one of which is make international calls for very cheap. Once you sign up for Google Voice, you can make cheap international calls on your cell phone. Kudos to this post for explaining how: http://readystate4.com/2009/07/31/google-voice-skype-the-unrelenting-phone-industry-and-a-cool-iphone-tip/
In a nutshell, you will need to use this formula when saving international numbers on your iPhone:
(aaa) aaa-aaaa , pppp, 2, 011 bb cccccccccc#
a = your Google Voice number
p = your Google Voice pin number
b = country code of the number you’re dialing
c = local number of the number you’re dialing