Personally, I find word of mouth to be the most effective.
Though I would vote on SEO first, because organic search results tend to be more effective, and if you know how to do it yourself, you're avoiding cost all together 🙂
SEO is definitely better. Though difficult to achive this is one aspcect which should be considered seriously. Over time if your website is coming up on organic search results, you are not incurring anything on advertising or SEM.
SEO is important, of course, and can keep the traffic coming even when you are not doing any other promoting. There's nothing better than word of mouth, too so some sort of incentive to refer friends is good. Not necessarily an affiliate program though - people see that as the person just trying to make a buck. I think it would be more effective if you gave them a discount or extra features instead.
SEO and SEM will be very helping for your websites. Of course SEO will be cheaper if you can do it yourself 🙂
One of the ways can be done by analyzing good and proper keyword lists for describing your sites well to improve your page rank and also ranking in search engine.
However, SEM, although it is costly, it will be very helpful to market and promote your website through the online world 🙂
I think SEO is very important for any online business, but I don't think there is only one aspect to focus on. You need to tackle promo on several levels. A great option is viral marketing (you see a funny video on youtube which is also a plug for a product and service, and you share it with your friends because you liked it). The only problem with viral marketing is that it can be tough to come up with something creative and catchy enough that people will share it.
Both SEO and SEM can be expensive, but the returns would make the cost (which could be four, five or more figures) would look like peanuts if you choose the right person/company.