1. Business doesn't know what they want, or can't communicate it well. 2. Business reluctant to go with startups and rather pay out the nose for large, entrenched and very expensive companies (Oracle Applications, SAP, rent chargers, etc) 3. Scope creep, scope changes mid development. 4. Negative productivity developers (who make things worse) 5. Absolutely poor hiring practices industry wide. 6. Vendor lock in. 7. Poor development tools and languages (weak-typed js makes refactoring 10x harder). 8. Overburdening development processes. 9. Inter-departmental friction for developing software. 10. Hands off, ivory tower management. 11. Trying to make software fit everybody. 12. Security concerns.
These are just off the top of my head. There are many many more. Having said all that, that's why software costs what it does. As far as it being expensive, if it's more expensive than the manual way of doing it, don't buy it. If your company is competent enough to roll your own, do it. It's a hell of a lot cheaper than folders, paper and filing cabinets (just ask the VA).