Excellent points! For me, like a lot of things, it's a balancing act. Context is important too. I've found throughout all my years designing characters that eventually you learn to enjoy playing realistic, flawed characters better then you ever would a Mary Sue. Start thinking of your character as a real person, even if it's a fantasy character. In that case, you know you've done a sufficient job if you could strip away that person's fantastic traits and special powers and yet still have a well developed, playable person. Put your character where the action is, but don't make them save/wreck the day singlehandedly either. Make their traits balanced, so that they have room to grow and make mistakes, but also create long-lasting relationships. Just like groups of people in real life, they'll make up for one another's flaws and create a strong team by combining strengths. Characters in a good RP help develop each other; the character bond is the most important construct for holding an RP together. Of course, characters becoming friends paves the way for players becoming friends, and isn't that the reason a lot of us are here? =)