Um, Ash saved the world. Many more times than Gary has, so there.
In the first season, if you actually consider how many Pokemon Ash evolved, there was only one that didn't ever consider evolving; let's think back, shall we?
First, we had Pikachu; he denied evolving, and as Ash actually listens to his friends' desires, he decided not to evolve Pikachu.
Bulbasaur: Had the chance to evolve in the Venusaur Garden episode, but he didn't want to evolve as well, so Ash pressed the B button.
Butterfree: It started as a Caterpie, and he trained it through all its forms. He only let it go because it was in LOVE. D: I mean, c'mon.
Pidgeotto: Evolved into Pidgeot by the end of the season.
Charmander: We got Charizard.
Primeape: Was originally a Mankey, it evolved into a Primeape; coincidentally it was during the same episode, but you get my drift.
And as for Squirtle, an idea for his evolution never made it to an episode, but I'm sure Ash would've let it evolve if it wanted to.
Now moving onto the current generation, he has a Turtwig, Pikachu, Staravia, Chimchar, Buizel and Gliscor.
Gliscor is evolved, Staravia is evolved; and based on the manufacturing of the 12th movie products, Chimchar and Staravia are going to evolve. So don't tell me he has all the baby Pokemon; if you think back to the Lt. Surge episode, and you consider a Pokemon's movepool in an evolutionary line, a Pokemon has the chance to learn more powerful moves at a faster rate, or learn moves not even available to it's evolution. Perhaps Ash considers it advantageous to learn these moves before considering evolution in the first place.
Plus, haven't you seen how he has beaten Gary? I mean, c'mon, give the main protagonist some credit. :| And do your research, too.