Furthermore there is another issue of consumers expecting software to be free. Services generating revenue through ad revenue help promote this by keeping software free or cheap and making easy money off of ad revenue instead. Entire companies are built on this business model – take Google, Facebook, and others who’s entire business is built on selling your personal data to others.
As a developer, if you aren’t building software that people are willing to pay enough money to more than balance your cost of development, again you really need to rethink your business model. The gold rush days are over, and so is the easy money. We need to return back to real-life business and software development. So either your software itself should be invaluable to the consumer, or your software needs to facilitate an actual money-generating business. Take for example any banking app. Banks develop these apps at cost and give them away free to the consumer. They don’t need the app itself to generate revenue – the app is actually facilitating their real revenue generating business.
update: Seth Godin’s take on ad blocking.