I use O&O's defragmenter. I like it.. it's about the same as Diskkeeper though, so whichever you can get, go for it. OO has a trial versionf or 30 days so ther'es no harm in giving it a shot.
I'd stay away from norton's speeddisk. Just because norton puts files where it thinks it'll be faster, doesn't mean that's where Windows thinks they should go. You'll get thrashing more than you could ever want when windows reads a file and when it writes it it has to go to a completely different part of the disk because well.. that's what it wants to do. Windows doesn't know which is frequently accessed, which isn't, written to, not written to. Norton makes assumptions.
I always thought this, and then I read the not even that biased publication by the author of diskkeeper. He makes a very good argument why optimization is pretty pointless, and it makes too much sense to write it off as biased propaganda.
Anyway.. go with diskkeeper or OO
edited: Plus I thought Speeddisk defragged the MFT while the OS was up and running, which is a no-no.