Pretty well known by now but probably still worth a mention.
Keep two email accounts. The first one goes to friends and family only. Use a second email to sign up for sites/accounts or anything else that is likely to generate spam.
Take it even further and set up filters on the second account. All of my banks, credit cards, and retirement accounts are signed up via the second account. I then set filters that any emails from those organizations are forwarded to my friends and family account.