This is a comment that Erik offered… thought it should get a little more attention…
E-mail : email@example.com
I think in concept you have it down pretty well: survey your customers often. Depending on the product/service, I would even go as far as surveying them at every point of contact. For instance, if the customer contacts customer service, survey them afterwards on how much they liked customer service (this isn’t anonymous, but you can still get pretty good feedback). Every time they buy something from you, you should survey them.
And, of course, do monthly or quarterly anonymous surveys to your whole customer base (especially people who used to be customers but aren’t “active” anymore).
In terms of what software solution to take, there are plenty, but you want to go with the one with the most analytical capabilities – most of these software solutions are pretty easy to learn and do similar things, but you want a tool where you can drill into the data most effective.
I recommended InstantSurvey because I am more knowledgeable on the product than other solutions. I find it pretty easy to use, but its analytics, I hear, are a lot better than SurveyMonkey’s and some other competitors (though I can’t comment specifically). You can click on segments to keep drilling down into the data: i.e. click on the “Female” answer, click on the “18-25”, click on “Product 1” and suddenly you have the results of data from only females age 18-25 who purchased Product 1.
When people or companies first get into the survey space they look at all of these competitors and first look at price, but once they begin to realize the value of said services, you have to take the next step and look for a product that delivers the results you want.