@XY, letting fans vote is exactly the way it should be done.
If the All-Star game was actually meaningful, if it was actually meant to be something based on merit, then you'd be right.
But it's not based on merit and never has been. It's not what it is about. That is what the season ending awards are about.
The All-Star game is about popularity. It's a weekend long advertisement for the league where the most popular players are chosen to participate. The best way to get the most popular players involved is to let the fans choose because, at the end of the day, its about what most fans want.
The system only appears as a joke when people try to place a meaning on the all-star game that doesn't actually exist.