I used to just zip through the game with one Pokemon, usually my starter, avoid any avoidable trainers, and just try to beat the game. I stopped doing this when Lance kept defeating my level 65 Feraligatr and all I had left was Goldeen, Togepi, Pidgey, Weedle, and Beedrill, all around level 10. Same with Yellow, only there it was a level 60 Pidgeot, a level 30 Snorlax, lv. 28 Tauros, lv. 14 Pikachu, and two of the three starters at level 10. And it was Giovanni's Rhydon that kept doing me in. Stupid Rock Slide...
Anyway, I know better nowadays and I use a well-balanced team of six, always including my starter. Usually includes one of each of Grass, Fire, and Water. In the Hoenn games, I always try and do something so I don't wind up sticking my water type with all three aquatic HMs. In Emerald I taught my Hariyama Surf so my Swampert only needs Waterfall and Dive. In Sapphire, I taught Surf to Pelipper, and will teach Waterfall and Dive to Lombre/Ludicolo. I usually plan my team out beforehand, but sometimes I just make it up as I go. In Diamond, I'm doing an all-poison team. As soon as I caught a Zubat, I traded my Turtwig for a Croagunk egg. I got Croagunk, Golbat, Stunky, Gengar, and Dustox. Gonna fill the sixth slot with Tentacool. I might go all-poison in SoulSilver- Qwilfish, Victreebel, Arbok, Weezing, Crobat, Nidoking. Not HeartGold, I already got that one figured out- Typhlosion, Victreebel, Qwilfish, Dunsparce, Weezing, and Togetic/kiss.