The winner of the All Star Game should not determine home field advantage in the World Series. That is simply the stupidest, most illogical, nonsensical thing ever. I'll leave it at that.
There should only be 25 players per roster. Teams can only carry 25 players for most of the season, there shouldn't be more players on each team for one stinking game.
The DH should be in every All Star Game and nowhere else in baseball.
Bring back league spirit: get rid of inter-league play, hire presidents for each league (might be hard for Bud Selig to give up any power), and reinstate AL and NL specific umpires.
The introductions should not take 53 minutes. Just say the starters names and cut the offensively over-dramatic music. Play "Whoop There It Is" while introducing the home league's starters and "Who Are You" for the visiting league's. The fans should boo the visiting league, because that league sucks.
If you want to honor Willie Mays, say his name and let him raise his cap in the front row and let's get on with it. (Although his ceremonial first pitch was better than the Nats' 1st round pick, Ross Detwiler's.)
Either manage the game to win or treat it as an exhibition, can't do both. I'd say manage and play it like a real game. You play 162, you can play one more considering it's the All Star Game.
The Homerun Derby should be two rounds and only the top 2 from Round 1 advance.