I've outsourced some development on oDesk, and it worked out ok. I even hired one of the developers full-time for a different project.
What I did was start with a small project, and verify the developer's work. This is much easier to do if you are technical.
If you are non-technical, I think these sites are worthless. There is no way to know what you are getting.
Edit: I should say they are worthless for technical work. I've also hired a non-technical assistant who was in the US and that worked out great, and I'm sure other non-technical people could do the same.