1) SEO - We follow the mantra of segmenting by personnas, not features: imagine classes of users for the webapp and present the product to them based on each segment's needs. See for example http://www.erbix.com/eris-form-creator/collect-feedback/ or http://www.erbix.com/pluto-team-organizer/to-do-lists/ for how we did that with 2 of our most popular apps.
2) SEM - we buy keywords on AdWords, and, the critical part, we monitor signups as conversions to be able to track those clicks that actually convert. What we learnt in our case after spending hundreds of dollars: the clicks from the content network were cheaper but we never got a conversion from them, while those on the search pages performed quite well. We also zoomed into several other characteristics of converting clicks, which lowered our price per conversion (i.e. Thursday was from a long shoot our lowest performing day so we stopped advertising during this day etc).
3) Blogging - see http://www.erbix.com/blogs/erbix/view for recent posts.
The key to all those channels is to go through a 3-step cycle continuously: implement, measure and learn. Implement the traffic acquisition channels you can imagine, measure the effort and the results you get (clicks, conversions), compute the relevant acquisition price for each channel, learn from your data and zoom into (segment) those well-performing channels hoping to find an even-better performing niche. And repeat.