There are a lot of ways for them to get your address. If your friends and family send you "chain letters" (for example, stuff about little kids with cancer who will get a donation if you forward it, or Outback Steakhouse will give you money to forward the message, or virus warnings or inspirational poems), then even if you do not forward the email along, anyone ELSE who got it when you did and does forward it is sending your email address, too! Anyone who gets a copy of that email can easily see your address and sooner or later, a "bad guy" gets it.
Other ways you get on these lists: if you write your email address anywhere on the Internet, you'll get on a list. If you subscribe to certain newsgroups, newsletters, etc, you will end up on a list. And then, the spammers/scammers will just start making up email addresses and seeing which ones work.
There's no real way to get rid of them but fortunately they are harmless unless you get tricked into sending them money. Don't fall for it! If they are really bombarding you, then you can create a "filter" or "rule" to automatically delete their emails. Your instructions for this will vary depending on what email program you use (Outlook, web-based Yahoo, etc) so check the Help section.
Don't bother blocking/filtering them by email address--- they change addresses all the time. Instead pick a phrase they seem to use a lot but you know will not be in a legitimate email and delete based on that.