To protect a machine, I simply use MS AntiSpyware. It seems to catch a LOT of stuff, things SpyBot and AdAware miss. Windows Defender, even though it's suppose to be the same thing as MS AntiSpyware with a facelift, doesn't seem as good as the original beta 1 version. I got a lot of weird program errors and abrupt closings when I tested it out on some of my dummy rigs on the bench.
To remove spyware, I use MS AntiSpyware, AdAware, SpyBot, and Spy Sweeper. Spy Sweeper is the only one I know of that automatically removes the famous Look2Me junk from a users' infected system. Everything else does not! (at least from what I've used) HijackThis! is another awesome program for detecting silent infections and browser hijackers. I could go on forever listing my digital toolbox for spyware removal. It's kinda sad there's not just one 'top-of-the-crop' program to do it all.
I work on computers as a sort of side-job of mine and have been removing this stuff for a long time. I'm not saying I'm a pro by any means, but it's very true you have to use several programs to remove *EVERYTHING*. There's no one 'tried and true' program that does it all. However, if I had to choose just one, it's MS Antispyware beta 1, which is the only antispyware I run on my machine. It's robust, fast, runs in real-time, and it's up-to-date.