Spammers get email addresses in many ways. If you ever buy anything online, make sure they don't sell information (like location, email addy, what you tend to buy, etc. Selling credit card acccount #'s is a major crime). That still doesn't stop that company from sending you junk.
If you post onto a lot of BBS websites (like this one), make sure your email address (if used) is hidden. Some "spiders" and/or "web-crawlers" will go through a website, collect any openly displayed email addresses, and send that information back to a spammer. I wouldn't be surprised if spammers buy "lists" of email addresses, kind of like telemarketers buy lists of phone numbers.
On you email software, if it has a preview pane (like MS IE and Eudora have), set the software to NOT display the preview pane. Some viruses can auto-execute from the preview pane. Some viruses can auto-execute when you open the email, as they are embedded in the text.
Keep your anti-viral software up-to-date. Depending on how much time you spend on the internet, or how much data your transfer, you might want to update weekly, twice a week, heck I even know people that update daily! Set your system up to scan every other day, at night, when you're asleep (if you leave it on all the time), or set aside part of the day to scan your system. Download and install some kind of spyware to kill all the data miners and other spy-proggies out there. Get a firewall program and keep it set pretty high.
Don't open emails or attachments from people you don't know.
I've heard that some folks will create an email addy with a name of 01010101, and either no address, or something that will fail. This way, if a virus tries to send a copy of itself to everyone in your address book, you'll get a notification that it failed. I don't know if this really works or not.