ComputerWorld has an interesting piece on one of the aspects of outsourcing that doesn't get talked up enough - communication:
"Business owners still aren't happy with the fact that application design meetings need to be held at 7 a.m," he said, jabbing his chopsticks into the pickled ginger. "Projects are taking three and four times longer because overseas workers don't understand our business the same way my old employees did. It's not that one group of developers is smarter than the other; it's that my old group had more experience on the existing applications than the new one does. In a couple more years, it will probably be OK, but for now, it's a disaster."
Forget the cultural issues (which themselves are non-trivial) - just look at the communications issues in the simplest way - there's a 12 hour timezone problem. You can't have business calls during normal business hours for everyone. That's going to have a productivity impact. Heck, I see this even in a non-outsourced relationship. We have staff and partners in Australia, which is 14 hours off-cut from the east coast of the US. That makes real time communication difficult, unless someone is willing to work during non-business hours. It often means that any communications are going to be delayed by a full day - which makes misunderstandings difficult to fix.
In most of the talk about offshoring, I only see cost as a factor in the decision. Communication ought to be front and center.