I made the decision to outsource the development of a moderately big PHP project a few years ago -- I went through a LOT of profiles on oDesk and finally settled on a guy (who billed about $30/hr, which was on the high end for non-US guys on oDesk). He was _terrific_ -- we were basically on IM with each other constantly, and he was very open with regular code reviews and feature checks. He added a ton to the project and it worked out way better than I could have guessed given the stigma outsourced development has.
The key, I think, was as other folks have pointed out - that I speak the same technical language and wasn't throwing big meaningless features at the guy ("I want it just like Facebook, but for pets!!").
My only frustrations were things that, unfortunately, can happen with outsourced work -- timing. My guy was an A developer, but a B/C time manager. So the project took about 2x as long as it should have.
But as they say -- quality, price, speed: pick two.