I'm strange, I never have problems with gym leaders, but because of this I'm always horribly underleveled when I reach the elite 4. The funny thing is that I have no problems beating them with a team of 40's, but it's when I hit Lance that I get stomped. It's always his Gyarados and Aerodactyl that get me (I surprisingly never picked up any pokemon to deal with either water or flying, so they kinda destroy my team a bit), and I usually ended up killing them with my Kadabra (no friends have Heart Gold, or Soul Silver, so I can't get Alakazam), and even that was a gamble.
Only reason I ever beat lance was my Typhlosion learned Rollout, and I got the world's luckiest Rollout combo going, took out all three of his Dragonites, and his Charizard with none of my pokemon being above level 42. I still feel like I didn't deserve that win, because it was 100% luck.