Swipe and Swiftkey are the two best so far.. And since they are so different, you may just have to try each for a week or two..
I like swype, but my fat fingers would cover up the keys where I needed to go next, and I kept making mistakes. I tried swift key too, but everytime I put an "S" in, it changed it ti a "Z". Many other times it would just put in whatever word it wanted.
I switch between swype and swiftkey.
Currently using swiftkey with 13ms haptic feedback. I hate feedback on stock, it's toooooo slow. With swiftkey, when haptic feedback is set to around 13ms it doesn't slow me down and instead acts as it should, namely, letting me know whether I actually pressed the key.
I'm also using handcent sms, which allows you to speak a text regardless of what keyboard you're using. Very handy for all the cool aftermarket keyboards that neglect the mic button.