I just realized that no one ever criticizes another person unless they think they're doing something better and the other isn't. So if you're criticizing someone for always criticizing something just because they think they're better than what they're criticizing, you're doing exact same thing as the person you're criticizing.
Try and wrap your brain around that.
So what really matters is how much better you think you are and how aware of it you are. The degree of the feeling of superiority is what really counts. If you criticize only because you think you're better than whoever you're criticizing and want to stroke your ego, but are unaware of it, then you're a hypocrite.
I've often come across people who insult, belittle, and criticize to inflate their ego and won't admit it because they don't know it. And far too often, it indicates that they have the exact same flaw they're accussing the person they're criticizing to possess, only more so.
Of course, it's different when a person criticizes another person's accomplishments as opposed to their character, and unless they have similar abilities, more often than not they can't do any better. The usual response to this is "I'd like to see you do better". This sort of criticism only works if it's constructive criticism, and the person doing the criticising actually has valid points. Otherwise, your words are bound to be ignored or defied.
The key here, I think, is that to criticize, one must be honest with themselves and have some degree of modesty. For instance, I criticize people whilst being fully aware that it is because I think that I'm doing better. If I wasn't honest with myself about that, then I would be a hypocrite. Criticizing others should also mean criticizing yourself to some degree.