You are exactly right! Extreme hair and eye color are two big warnings. BUT it is completely fair for her to dye her hair because that speaks of her social status and mentality to an extent. As for contacts, if it doesn't play a part in your story, don't mention it.
-Ok, that said, the biggest way to avoid Mary-Sues is to avoid overly describe physical atributes. Give your reader just a rough frame to work with, they will supply the details for themselves as to how they look. Don't make your characters devastatingly attractive unless it is important to the story. People will always imagine characters as more attractive than people in real life so there is no need to overdo this.
-Don't give your characters exotic names for the sake of being exotic. Names are one of the most important things given to a character in a book and should reflect their family, social, and sometimes even monetary background.
-Don't make you characters cunning linguists - meaning, don't make it so that every bit of dialogue they utter is clever unless there is reason for it. The average person does not always have the perfect thing to say at every given moment in their life. Mary-Sues do though.
-Don't go in to detail about your character's wardrobe if not necessary. No one really cares what they are wearing for the most part. Of course there are exceptions to this rule (think The Devil Wears Prada) but, unless fashion plays a role in your story, don't bother telling the reader what your character typically wears. Only describe clothes when it is a special occasion.
-Don't use stock characters.
-Don't make your characters completely compelling. There is not living person who is incredibly interesting all the time and in every aspect of their life. As a matter of fact, people are boring a large percentage of the time. That's not to say write a boring story, not at all. What I'm saying is that your character doesn't have to have a full life of volunteering to help the homeless, hosting bake sales for their church and donating organs to needy people to prove they are good people. Nor does a high school student have to be in a certain clique, do after school activites and have a self-cutting problem to be a high schooler.
-Don't use stereotypes. People are dynamic, complicated.'
-Don't make your character always likable. There should be times where the reader gets frustrated, angry, dissappointed, disgusted, shocked, surprized and/or saddned by a character's actions - even a character they love.
And, lastly, always remember that the writer must know a character inside and out, but not every detail that the writer comes up with about them should make it into the writing. For more on this idea, read about Ernest Hemingway's Iceburg. Of course, all of these rules can be and should be broken in certain situations. They're just things to keep in mind. If you have to go against one of these, be sure you can justify truly your decision. These are just my suggestions based largely on things I've learned from stories I hated.