The best tool that I have found is using vim with the DirDiff plugin. If you use
vimdiff, this Plugin will be easy to learn.
The author describes it this way:
This is a utility that performs a
recursive diff on two directories and
generate a diff "window". Based on
that window you can perform various
diff operations such as opening two
files in Vim's diff mode, copy the
file or directory recursively to the
other, or remove the directory tree
from the source directory.
DirDiff is like using
vimdiff to compare two directories, and all subdirectories and files contained therein. I use this tool often for comparing different Subversion branches, configuration directories on different hosts, etc.
For a screenshot, look at dedm's blog: http://dedm.livejournal.com/115224.html