While the Auto-Complete is good, but it is hard to skip a recommendation since I almost always have a problem in hitting the 'x' and end up in a few irritating cycles of 'delete-word-retype-hit-x'. (Especially bites me when typing acronyms in text messaging.)
Allow the connection of a keyboard - bluetooth, hard connection, doesn't matter, just something. A USB to iPhone adapter would be incredible, my roll up keyboard would would great. The telnet, ssh and network utility applications and a keyboard would make this an incredible little portable computer, but editing files with the onscreen keyboard is near impossible.
iPhone has same problems as lot of their competitors. Why not Apple join the Symbian, Android and Palm community and let developers work across to create multiple cross platform applications. After all all of these guys are friends and they do communicate behind doors. Enough of nonsense about owing and creating application for your own preparatory use.
Allow click-drag on keyboard with one finger to see which key is selected (like it does today), then use tap with other finger to "hit" the key but DON'T dismiss the selected key! This would allow easier text input for people with fat fingers.
Add proper Persian and Arabic support (UNICODE) to be able to read and write in Farsi or Arabic . Safari doesn't show Persian or Arabic characters properly, characters are separated, Apple needs to update the UNICODE fonts to fix it.