In addition to having a sign-up form on your website for visitors to register for your email list, I saw a great idea in a little local ice cream shop the other day.  If you have a retail store put a small laptop computer at the checkout area that allows people waiting in line to pay to add their own email address to your list.  This avoids the hassle of having to ask them for it, it is definitely opt-in, and you know the email address is inputting accurately.  This is a great option for coffee shops, ice-cream shops, restaurants, etc… where people are standing around waiting for their coffee, ice-cream, or order to be filled.