He won it because the things he does consistently on the football pitch nobody else can do. Not only that, but unlike Ronaldo he turns up in the classico's, and he turns up in finals as well. Almost always scores in finals. He assists like crazy in addition to scoring so many goals, the guy is a semi complete player. Go to the Madrid forums, you'll find that lots of Real fans actually admit that Messi is superior to Ronaldo. Real fans jeering on Ronaldo in the last classico is quite telling too.
But admittedly(and thankfully) if Ronaldo didn't choke in the WC too, he probably would have taken advantage of Messi's bad WC and won the award.
Ballon d'or goes to the player who did the most during a calendar year. Messi would have been 4th last year if you count only the points that come from football experts (as it was done until last year) but he was given the award because FIFA added its touch to the award and counted the votes of the football captains. Messi won the award because of the football captains of some Oceanian island countries and similar guys.
Check last year's voting and you will see for yourself.
Ronaldo in 2011 scored 56 goals and made 16 assists on 52 official matches. If we do what was done last year, then he should win it this year, even if some others deserve it more.
Simple, Messi didn't deserve last year's award. Give me one good reason for which he deserved it, if you exclude the matches against La Liga minnows.
Was it for what he did in the most important CL matches? For what he did with Argentina?
Ronaldo this year did everything that Messi did last year.