What you BELIEVE is lacking is your main problem. You can't see yourself in reality because you think there must be all these flaws, most of which aren't really there are are inconsequential or even emphasized in your head.
You can't do anything about being taller, although, there's nothing wrong with being 5'6. Tom Cruise is only 5'7 and he does okay. You can, however, do something about being thinner if you really want it. The smile, you are probably trying to force it, it's not coming out naturally, so of course it won't look natural to you.
Comparing yourself to others, well, that's a never ending journey, because there will likely always be people you perceive as better than you, but there's also people who are not better than you. In the end, we are all the same, in that we are all different. There are qualities that you have that others don't, and the same goes for the other way around.
You can conquer your shyness, but it will take hard work and putting yourself out of your comfort zone. Try something harder than you usually do, say hi to people, that sort of thing, and it will get easier the more you do it.
As for those girls talking about finding a guy to treat them well, saying that you are one of those means nothing, it's an action kind of thing, they have to SEE it.
These people that insult and/or embarrass you, do they KNOW you? If they don't, what they say means nothing. They insult you because they can see it bothers you, because you seem like an easy target to them and it makes them feel superior over the own **** they have going on in their own likely messed up life.
What people say about you can't harm you unless you allow it to. Instead of focusing on the insults and what see see wrong with yourself, look for the good, focus on that. Go a week or even a day without judging yourself and see what happens.