The issue of advertisements getting shown less because everyone dislikes them is something we're looking at closely. We focus a lot on individual user preferences, so if you dislike an ad hopefully there is someone out there who likes it and they will get shown the ad more to keep the number of impressions consistent. However, there will be cases where an ad gets less impressions because the majority of people dislike it. We feel that serving these ads as much as the ads that everyone likes creates an inefficiency in the cost per click model: if you're a website publisher and there are two ads that pay the same per click, you're not making as much off the less popular ad. We're exploring ways to incorporate ad ratings into the cost structure in a way that gives advertisers incentive to make well-liked ads.
Also: guaranteeing a minimum viewership/maximum price for cost estimation is definitely something we're aware of, and we have some ideas on how to achieve that. We'll reveal them when we're done ; ).