This might not have entered into your vision of reality but I assure you that's how it works. If you keep getting shafted by cheap programming "talent" and keep looking for more, you might just be a fucking idiot.
Swearing and making poor extrapolations off of a simple query doesn't make you cool. It actually makes you look like the idiot, not him.
Great programmers tend to value other things such as working with other great programmers and a stimulating problem domain. The money tends to be an adjunct.
Perhaps you could look in the open source community of your language or technology?
Occasionally, maybe 4-5 times a year, I get burned out on whatever current crazy startup idea I'm currently working on, and so I go looking for something different to do for a week or two.
I spend around 2 minutes looking on Elance, Rentacoder, etc, and immediately get discouraged (see above). Then, I spend some time looking at craigslist and maybe apply to 1 post in an evening's time (it's a lot of work getting your resume prepped to send). Then, a couple of days go by and I don't hear back from the one poster I applied to (I assume they are too swamped with awesome applicants to respond)...
So I go back to working on my project.
2. Use your network. People you know, even friends of a friend, are far more likely to be honest about their skills.
3. If it looks too good to be true, test it. Ask for previous works, ask how they would solve a problem, ask until you're convinced they can do the job.
4. Be clear about what you want done. Draw up mockups, outlines, concept of operations. The less the developer has to ad-lib, the less skilled they have to be to get the job done. I'd venture to say that most of the mixups developers make are due to requirement holes. If you know what you want, you can verify its done the way you want it done too.
Job adverts and assessment questions written and reviewed by technical people look a whole lot different to ones written by the non-technical.
DO:
1. Check with your inner circle first. You know their interests, skills, and reliability. If they're not available, ask if they would vouch for anyone they know that might be interested and available.
2. Broaden your search to past associates who you have reason to believe would appreciate hearing about the opportunity.
3. Check the list you've been maintaining (!) of programmers whose public work you admire and who have indicated availability for consulting work.
4. Present the opportunity to relevant user groups or communities. Be sure their policy welcomes such queries, especially if you're not a regularly contributing member.
5. Be upfront and explicit about available compensation. It wastes both party's time trying to get a max $25/hr opportunity together with a min $125/hr consultant.
6. Consider permitting remote work. Some of the most effective teams I've worked with have been distributed geographically. If you can make this work, you've increased your pool of possible matches tremendously.
DON'T:
Assume that your need to find someone gives you license to be pest. The one person who ends up in the position will appreciate that you found him/her. A small group will appreciate the consideration. A somewhat larger group will tolerate the intrusion. Most of the rest of the world won't want to be interrupted. Try not to bother them.
Craigslist is honestly better than those places.
Ask for references, samples of past work, etc. Good programmers will have to ask you "of what kind of work" to narrow it down.
Request a few small code samples from candidates with some short (a few sentences description) of what/who/how the code was designed for and a little bit of context (ie, was the code produced under a 24 hour deadline to fix a critical bug or the result of a six month side project).
Have your existing reliable programmers skim over the submissions, looking for a quick yes/no. Bring in (or video conference, whatever works for you) the yes candidates, and actually treat the interview as a short work session. Brainstorm about your project requirements, technology approaches, talk about challenges you see, ask them for what challenges they see and how they would approach the problem. [EDIT] - oh, make sure to vet the submitted code samples too - if a candidate can't talk coherently about the submitted samples, I would be in "thanks for coming" mode.
Ultimately, I'll echo what most posts here are saying - if some hacker/programmer in your network says good things about a fellow hacker/programmer, you're probably way ahead of the game.
If you're completely unable to evaluate technical candidate skills and have no hacker/programmers in your personal network, I think you have to move back to a suggestion by bjclark - "Hire a reputable company." Maybe you can even pay a reputable software company to vet candidates for you - I've had poor experiences with IT recruiting companies, but I've always been on the other side of the table, trying to find a good technical recruiter to work with.
Oh, and be prepared to actually pay an appropriate amount of money. You do get what you pay for.
Also, many of the online resources such as elance and oDesk have US and Canadian profiles.