New technology is released so often that the failures of the past are quickly hidden by a version n+1 in a new language. Your VB6 app is so horrible you can no longer maintain it? That's ok, rewrite it in .NET. Your .NET app is horrible? Don't worry, the new version of Java will solve your concerns.
It's not the software that is bad, it's the people writing it. Applications shouldn't be rewritten every 2 years, especially since most application development is still done in a waterfall approach and it takes on average a year to produce any production code.
Stop investing in the "latest" software trend and invest in the current product. The first thing you can do is get some very talented help.
Imagine how much you'd save if you actually had a product that ran for 5 to 10 years and you didn't have to employ two dozen developers to make minor changes to it.