As with most things in life, the All-Star selection process is damned if you do, damned if you don't.
If the managers/players got to pick 100% of the roster, people would complain when a guy like Cal Ripken (during one of his bad years) didn't make the All-Star team. "How can you not include Cal Ripken? Who cares if he is hitting .254? He is a legend!"
But if the fans pick 100% of the players, people complain when Overbay (and other small-market players) don't make the team.
All things considered, I think the current selection system is a good compromise. Fans get to vote for the starters, they get to vote for the players they really want to see. Then the managers get the opportunity to fill in the gaps with players based on stats, performance, etc.
Is it perfect? Nope. But is anything perfect? Nope.