Best way to avoid spam is to never ever ever use that email address for anything. Use a spam account for all signups, etc. Problem is...then you have two (or more) email accounts to check for real emails.
For free, Gmail is pretty good at filtering spam. You could "filter" your email through gmail by having it check your existing email account(s), and then access that email through either POP/IMAP or the Gmail web page.
I have Gmail pull email from multiple POP/IMAP accounts and then sort them into separate folders with labels. Since its very good at filtering spam, all that is usually left in those folders is advertising emails from legitimite retailers where I used that email address. I only need to go through these every few days or weeks. The primary gmail inbox is where the real stuff ends up.
Edit: I use mail.com for the secondary/spam emails. They offer all kinds of wacky email addresses for free, and they allow IMAP connections (AOL's email system) so Gmail can just grab it from there directly.