First of all, how many pokemon do you want to use? I like to use 5 for battling and keep the last slot open for an HM slave. For example, Furret can learn Cut, Rock Smash, Surf, and Strength. Many of these are field moves needed to complete the game. With an HM slave on my team, I don't need to keep going back to the PC to deposite and withdraw pokemon. It's also easier to train 4-5 pokemon than 6.
Also, I highly recommend getting different types. Don't try to have 2 or more of the same type as that doubles up on weaknesses.
When picking moves for your pokemon, try not to have 2-4 moves of the same type on one pokemon. For example, if you're using a Fire-type, then Flamethrower is really the only Fire move you need, as it's probably your most reliable. The other three moves should hit types Flamethrower can't hit.
As far as indiviual pokemon, that's up to you. Just pick your favorites. Any team can beat the Elite Four if it's at a high enough level, and if the pokemon has a decent moveset.