JkDefrag is a great free defragmentation tool for Windows. I'm using it more and more instead of all the other defragmenters out there. It is fast and does a decent job defragmenting.
To complement the functionality of JkDefrag, it is recommended to use
JkDefrag GUI is a nice addition to JkDefrag that makes all the functionality of the underlying program through a graphical user interface. You can schedule defragmentation runs, select options, install screen saver defragmenter, etc.
I'm having issues running the above listed programs on Vista and Windows Server 2008. Not sure if they work correctly or at all.