The Short Story: If you constantly find yourself in bad relationships, it's time to change how you're doing things.
Stop whining about not finding a great guy when all you do is date jerks and losers. If you like him because he's mean to you, there's a problem. A rather significant one at that.
I don't care what excuse he gives you, if he's over 25 and still lives at home there's an issue. Stop telling everyone it's because he's helping his mom pay the mortgage or some other fairytale like that. If you're going to lie, at least make up a cooler story.
The more you make excuses for bad behavior, the further you're going to get from reality. The reason why you put up with this nonsense is because you haven't yet figured out you're better than him. Learn that (immediately) and stop wasting time on dead ends.
Life's too short to waste it being unhappy. Not to mention constantly bitching about it to your friends.