I think you nailed some of it; their personalities and what they like can influence what Pokemon they get. But there are other things that can influence their teams as well. The cities where they live can also influence what they get. For example, there could be a trainer who lives around Fallarbor, a town that has a desert, a volcano, and a mountain near it. A trainer who was born there may end up catching a Pokemon from the desert or a Pokemon who resides on the route to the mountain. Or a trainer who lives by the sea or near a lake could end up with some water types.
Also, the occupations and hobbies they have can influence what Pokemon they want or need. You remember the hikers from the video games and how they always seemed to have Geodude, Onix, Machop or some evolved form of the three? Well, all of those Pokemon live on mountains or in caves, which are places where the hikers...well, hiked. A bouncer could have a strong fighting-type Pokemon that can help with some of the more unruly customers. A baker could have a fire-type to help with the cooking. A hitman could have an aggressive Pokemon that can kill people quietly. Or you could completely subvert every one of those things and make the Pokemon unexpected.
In all honesty, the only limits on what Pokemon a character can get are the ones that you impose on them. Otherwise, you're free to write what you like - with an explaination, of course.
Actually, what you should keep in mind when writing a trainer is that this isn't you, and it's not about you or your favourite Pokemon. This is a character in their own right, who has their own personal Pokemon preferences, who has only been to certain areas with certain Pokemon in them and so on. Thus, you need to take these things into account.
Like you and me, different character will have their own favourite Pokemon or types. Whether they prefer ghost Pokemon or blue Pokemon or smart Pokemon, that's going to differ between characters, and it can be fun trying to create a team around that. It helps you get to know your character better. Secondly, you have to take availability into account; where has a character been, and what Pokemon would have been available to them? A character who lived by the sea all their life likely won't have had the opportunity to catch a fire-type, for instance. This can also make it interesting and a fun exercise to find Pokemon that would logically have been within that character's grasp, and you can get to know where your character's been.
If you do find that too limiting, there are other ways to get different Pokemon. Does this character have any friends or relatives who are/were experienced trainers who might be willing to give them one of their Pokemon/Pokemon's eggs? Do they perhaps have access to a GPS where they can trade for Pokemon from another region?
Lastly, don't worry about choosing Pokemon based on their popularity. As long as they're well-written and have distinct personalities, nothing else really matters. (That said, it's always fun seeing Pokemon not often written about and seeing how it's written. :>)