The biggest problem is that clients on those sites want you to build them facebook in two weeks for $300. People willing to work for this type of client are your run of the mill php spaghetti coders. They tend to attract the worst of both coders and clients.
I agree with jefflinwood's comment. Setting a price floor at a reasonable rate will weed out the "$300 for facebook" clients. I'm not sure, however, how you would weed out the bad coders.
I've used freelancer for hire sites to get specialized work done, and they're not horrible from the hiring end.
Here's what I would do to fix things on the freelancer side - establish a minimum price per hour/price per project. Think about "The Ladders" - a job site that established itself as only for job seekers for $100,000+ jobs.
What if the market was only $75/hour and up? And both developers and clients had to be invited?
It's been very tough. Unfortunately I have found that the most lucrative projects tend to be those that require lots of ongoing maintenance, or people graduating from a crappy MVP into something that needs richer features.
the right clients understand that paying a premium for quality will save them time/money/stress in the future. disclosure: i'm tim's partner for matchist (http://matchist.com) and we definitely see a difference in the motivations of clients who have outsourced with terrible results in the past.