I'm a contractor that has spent most of my career 'on site' at various large institutions. Never less than 2 years at any one spot - the contract has always been extended even after the original work has been done.
I've seen "in-house" development groups come up with some of the nastiest, most byzantine pieces of crap-hackery you could possibly imagine
Very true, It you hire crap staff you will get crap results. Most of the places Ive worked had environments like this. In fact, its usually why I get called in ("ARGHH!! ITS ALL SHIIIIIIT FIX IT!!!!!!!")
But with vendor approaches, if you dislike the direction the project is heading, you can kill it, cut out the vendor, and move on to something you find more acceptable.
Hang on. Your saying that an IT department that is not capable of hiring even basically competent staff is some how magically able to contract and evaluate a 3rd party to meet their businesses needs?
That's rubbish.
The same lack of management competency that led to hiring crap staff will result in a crap outsourcing project.
If you have a good management layer, you will succeed regardless of outsourcing or in sourcing. If you have a continual need for X number of developers, why pay the over head of a contracting firm? Sure bring in people when you need to, but they should support your in house team not replace them.
I say if your big enough for an IT Department, your big enough for at least one full time developer. If you want to outsource, then walk the walk and outsource THE LOT (Includes all CIO and IT related management positions)