Swype.
This works best for alternating between two languages. I have tried (paid versions) of all the other major keyboards but they couldn't handle this nearly as well.
I also love the very intuitive commands for Copy/Paste/highligh All which are built into this keyboard - just swipe from the Swype symbol (lower left) to C, V or A. This is incredibly handy and something I just can't live without now, it works much faster for me than relying on the usual Android symbols. You can also swipe from the symbol to backspace to hide the keyboard, also very handy.