(Edit: This was supposed to be a reply to a comment that seems is gone/deleted now. Please be kind if this comment looks like out of context :-))

DISCLAIMER: I run a small Django company in India, with more than half of the revenues coming from remote web development for US/Europe companies.

Remote development service can work very well irrespective of location if "cheap labor" is not the only reason behind it.

What I have seen is people hiring remote developers in East see remote developers as "us" and "them". As long as remote devs are not seen as a part of team working together like a machine which is working 24x7 - one part of the machine works, while the other part rests.

As someone(I don't remember who) once said, "if you are paying peanuts, you will only get monkeys".

Now, we have had times when we HAD to work(no other option) at as low as 7 USD. What is the problem with this? This is not enough, anywhere in the world. During those days, results were disastrous for us. Since we had to cut expenditure and eventually salaries, we lost 4 out 5 of our core dev team. In a way we had to build our team from scratch.

Remote development can work and we have had some amazing experiences. Here is what I have seen works:

- Have an in house dev team: For anything non-trivial have an in house dev team, even if it's a team of just one engineer. Hire a good one. He will help you in understanding/verifying the technical capabilities of the remote team. And It will ease up lot of communication difficulties and shorten the unending meeting over Skype/IM to a minimum and save boat load of time.

- Give them a small project for a week as a test of their capabilities. This way you will also keep out swindlers - companies/developers pretending to be good instead of actually being good.

- Stay away from unbelievably cheap labor: You can get devs at 5 USD but understand this; while life may be cheaper in east but it's never this cheap. You may get a good developer (with no other options) really cheap, but he/she will jump the ship without blinking as soon as a better paying opportunity comes. You will get an good(not great) developer for $20-$25 and really good devs for $35 - $45. If you are looking for "GREAT" engineers(which as rare here as anywhere in the world) they will cost approximately same(or may be 10 - 15 % less) as in US/Europe.

- Stay away from companies who claim to have expertize in every possible technology. Find companies who work in niche. E.g, Want a rails developer; find a company/individual that specializes in rails. These are the companies that generally have a project manager talking to you and you will probably never get to talk the actual developer.

- Don't do too many meetings: Meetings, specifically long ones and in the morning, drain out energy. When a developer has a meeting at 10 am to 12 noon, you just killed his and in turn your whole day of work. Have 3 - 4 short 15 min meetings per week and stick to them. Also do not generate unnecessary email traffic, long meetings and long email are the same thing - time wasters. Instead use ticketing systems to full advantage. Concentrate most of the communication on it.

- Learn about the remote team: If you have a remote team, learn about them. Learn about their culture. Learn about things that are important to them. Talk about things that interest them other than work. Always remember, a common developer(who is employed by an outsourcing company) is shit scared of the client paying in dollars. They will say yes to almost anything(specifically Indian devs - no matter how advance we claim to be, we as a people, are yet to shake out out of colonial mentality of "Yes Sir! As you wish Sir"). They don't want to offend clients and in turn their bosses. So get to know your developer team. A small amount casual talk will go a long way toward building the mutual trust and increase comfort level and in turn productivity. The target is to make your remote team feel as passionately about your product/project as you feel yourself. And it is not possible if you are not willing to invest time/energy to integrate your remote team.

Just my 2 cents.