I think you have to see it as all part of a cycle (companies “diversify” then go back to “core business”, and round, and round). Outsourcing has been around forever. The current economic situation is such that the “it will save $xm is a strong one”, quality be damned.
My experience is that when you get new senior executives in a company, they want to make a major impact, and their remuneration is often based on pure cash savings, so they go for outsourcing – it shows a quick return on the bottom line. Quality often suffers, so, the executives move on (with bonuses) and the next bunch in go for “quality”, ie in-house development. And so it goes.
I’ve worked as a user for both outsourced and in-house development of software, successfully in both cases, BUT the prerequisite was that I had direct contact with the developers. I could sit with them (for an entire day, if necessary) to ensure that they understood what I wanted (and I could understand if my requirements were unreasonable, and why, and if necessary, rephrase my requirements). End result, software that did what it was supposed to do.
The move to offshore outsourcing is based on the massive savings it offers, however it precludes the close user-developer relationship and is, almost inevitably, doomed to failure. You get what you ask for, not what you want.
A good (UK) example is the disaster of Railtrack (the privatised railways infrastructure company, which outsourced all of its maintenance), a number of high-profile disasters, and now renamed Network Rail with all maintenance brought in-house. Suddenly, “quality” has replaced “cost-savings” as the mantra.
I think the cycle will come round, unfortunately after many have lost jobs, and major projects have turned into disasters. Suddenly “in-sourcing” will be the next “big thing”. No great consolation for the victims…