After 2 years with the iPhone keyboard, I think I need both a software one and a hardware one! For a few situations e.g. language switching the software keyboard with good auto-correct is better, but for one-handed use, long emails I prefer a physical one. Also you get more visible screen estate with a physical keyboard.
A physical keyboard with good auto-correct would be ideal. The iphone keyboard is only good because of the auto-correct -it lacks haptic feedback. Other companies don’t have as good auto-correct, but that can be added in software.
So I’m going for the Palm Pre - you can easily hack it and add the onscreen keyboard if you want, and you can hack the auto-correct so it is as good as/better than the iPhone’s and more suited to your particular use. The iphone’s autocorrect implementation is faster than the Pre, but the Pre is still in its infancy and should improve vastly with updates and hacks.