It does work. More than you think.
The companies that are successful in outsourcing are not looking to get high quality software done cheap. They're looking for someone to take the burden of the whole process of developing software from the ground up from their basic (but vast and hairy) requirements.
This means, having a system in place to make sure every requirement that was specified was tracked and accounted for from some functional specification document right through the final UI pages and test cases.
It means having a system in place so that when QA discovers that requirement 4.3.1 doesn't have any test cases specified, they know exactly who was in charge of that and how it slipped through.
Boring and insipid? Yes. That's exactly why they're successful.
The successful outsourcing companies excel at this type of thing. That's why it's important that they get ISO certified and CMM Level-whatever.
Those achievements are not there to fool customers into thinking it will result in better software. It's there to tell the customer that we have a process and mechanism in place for dealing with your complex requirements.
All the offshoring failures come from doing a quick calculation of your developer's time vs the time of a developer in India and then thinking you're saving money by offloading the work.