I use mailshell.com (a pay service). The spam blocking is pretty good. What is even better is that you can set up an infinite number of addresses, use a different one everywhere, and cancel the ones that get spam.
For instance, when you sign up at this board, you could be
tfp@cnor.mailshell.com. At Amazon, you are
amazon@cnor.mailshell.com. And at that really sleazy porn site where you had a question,
sleazeporn@cnor.mailshell.com. Since sleazeporn went and sold your address to the spam people, you can cut off that address (since you already got the answer to that question) without affecting your other accounts.
There are similar free services, but I liked the flexibility of this service. At the moment, I have about 150 addresses.