I think I can comment on the "why does x go out with someone who mistreats them" thing, because I've seen it, lived it, gone through, REPEATED IT, and seen friends and family do it.
And it comes down to a couple things.
One is self-image and confidence. If you don't have much of either, you gain or try to gain some of it by who you're with. You gain a measure of status by attaining the otherwise unattainable. You're social climbing. You want the hot babe or hunk because of your own self-doubt, and the more distant they are or the more they mistreat you, the more 'valuable' a catch they must be. You always have to fight to be "good enough" because with your poor self-image, you figure that's the way it works.
Now it might make a LOT of sense to go out with that perfectly normal nice guy or girl who thinks you're wonderful. Ok, they have a few flaws. (Psst - so does the one you're with, but you can't see it yet). But - they're no challenge and - well, how "valuable" can they be if they are too easy to catch? So you find yourself constantly with someone who doesn't care about you, but who superficially has what you think you want. Well, maybe. Until you take off the rose-colored glasses. Which you won't. You'll ignore all of the warning signs, because of your self-doubt and insecurity.
The other is - people are just stupid. If Mister Doesn't-Treat-You-Right was ugly as hell, stupid as dirt and stunk like a skunk, you would not put up with his crap. It IS hormones, and desperation.
I never understand why people place conditions on a partner they would never in a million years place on a friend. Do you have a friend that you wonder "man, I need to find someone like them" - and try to realize, they probably would have FAILED your screen test.
You can find a good man or woman if you don't make demands on them that you would probably fail, yourself. You can have a great relationship with someone if you grant them the kind of forgiveness and grace you'd like extended to you when you screw up and don't measure up.