I tend to go for type coverage, but really it changes time to time. Like last time I went on FR, I decided to go with in-game traded Pokemon because I like boosted experience. So I took a look at all the in-game trades you can do and decide which one I want to use. Naturally I went for the ones most diverse with usable stats, so I went with Mr Mime, Nidoking and Dewgong. After designing their movesets, I picked up the starter that could cover the rest of the types that my other Pokemon cannot cover, so I chose Charizard.
Some other times, I picked up the starter first, and worked from that. This was in Platinum btw, but eh. I picked up the remaining teammates who don't share the same weakness as the starter and also whose movesets cover for each other.
As for my recent team, I had a different strategy. I decided based on the exp. points of Pokemon; I only wanted to train those who are in the Medium Fast category or below (100,000 EXP @ L100) so I made a list of Pokemon from that category. Then I went through the usual elimination process; stats and movepool and weakness. The only Pokemon out of the exp. consideration was the starter, but it doesn't really matter since they're Medium Slow anyway (and not Slow or Fluctuating).
Which is one of the reasons why I rarely use pseudo-legends in my team, since they're so late to get and so slow to train >_>
And as of lately, I've been experimenting with Pokemon I've never/rarely used before, like Weezing. It's fun ^.^
And it gives you that Rocket feeling