I second fish. I've been using it as my primary shell for more than a few years now.
The syntax is better than bash and familiar to those who've done programming in languages like Ruby or Python.
The line editor is actually useful. It handles indentation and highlighting. It will display an appropriate help page if you mess up some command.
It comes bundled with argument completion for most common Unix tools and is easy to extend for other programs.
for file in (ls /home/me/mp3s);
echo $file;
end
It will also highlight incomplete paths, bad syntax, etc, as you type. I know at a glance if I messed up a path or misspelled a program name.
Really useful shell.