If you're going to be friends with someone, you cannot expect them to act the way you want them to act. To be friends with someone is the accept every side of that person - the good and the bad. Honestly, it doesn't sound like you are a very good friend. You said it yourself, you push people away with the expectation they will remain your friend. Are you expecting them to prove their friendship to you before you'll accept them?
I'm not quite sure what you want us to say? If you're wanting us to pat you on the back and tell you there is nothing wrong with you, I won't be doing that. You can either accept that friendship is hard or become a friendless bastard who only relies on themselves.