ZSH is a pretty cool shell, and I've been using it for a while. The main selling point is the really extensive completion support. Check it out:
As you can see, some pretty neat stuff is possible. The only real problem is that zsh has a bit of a learning curve when it comes to configuration; to tell the truth most of my config was pieced together from various blog posts and snippets that I've accumulated since I switched to zsh. The solution here is to of course perpetuate the tradition!
Check out my .zshrc here.