Dear Jellybean,
I have a really bad habit. I always feel the need to correct people when they are speaking or writing. It gets really annoying because I know what they meant to say, i just have to have them say it right! PLEASE HELP!
-Correcting Machine
Dear Correcting Machine,
If you consider yourself to be a grammar and spelling expert, and kudos to you if you are, it might be difficult to hold your tongue when you seemistakes. However, sometimes that is the right thing to do. It depends upon the situation, and your relationship with the person who has made the error.
The first rule of etiquette is that you must never knowingly embarrass another person. Following that rule, you should never correct someone's speech or writing in front of others. If a friend says something incorrectly, you might wait until you are alone with them later, then say something like, "Remember when you said (whatever the error-ridden sentence was)? It's actually supposed to be (correct version). Just thought you might want to know."
Some people welcome constructive criticism, and will appreciate your tips - and that you didn't do it in front of other people. However, if your friend reacts with annoyance or anger, they are telling you that they don't want your advice - and you must respect that.
Circumstances also count when considering your question. If you have a friend who is about to speak in public - such as making a presentation to class - you would not be a good friend if you didn't gently suggest changes to any glaring mistakes in their speech or writing. Just do your best to offer it helpfully. You could even ask gentle permission, by saying something such as, "I'm quite good with writing, do you want me to go over your speech and find any grammatical errors?"
You should also never correct your elders - such as a teacher or parent - in front of others, for the simple reason that if they get miffed, they have the power to punish you in ways that hurt.
When in doubt, keep quiet - at least until you can talk to the person in private. As you say, you usually know what the person meant to say, and that's really the most important part of communication - conveying meaning. Grammar and spelling are important, but not when they become a point of argument that impedes friendship and good feeling.
Finally, I'm sure that you dislike being talked down to - so keep in mind that most people share that sentiment. If you must correct people, do it with grace and respect, and never laugh at people's language usage. Otherwise, you'll get the reputation as a meanie and/or a know-it-all, and nobody likes to hang out with one of those.