To expand on Abhijit's point:
Support for Legacy Code: Millions of Lines of Code are running reliably for years and Business Houses find no compelling reason to rewrite it on Non-Mainframe Servers.
In my experience, this is a rather large issue for the kind of corporations who choose to run mainframes (which are typically rather large investments). One project I was involved with was an investigation to answer a question: what technologies should the client (a large bank) choose to replace mainframes with? The question was actually split into smaller parts, focusing on the OS, the DB, and the implementation language(s) and frameworks.
Even just considering the language, we ran into a fairly major problem: rewriting the existing codebase was estimated to take around 5 years (without growing the development teams greatly, which would bring its own issues). Obviously this is a major problem in terms of lost opportunity to spend that time developing other software, but beyond that, it's difficult to pick a technology with those kind of timelines in mind. Java or .Net? In a 5 year period, what is considered "good code" in either one of them is sorely outdated legacy stuff, with major versions of each coming out every couple of years.
Sitting back and thinking about this, the kind of stability that mainframes provide extends to the actual environment as well, things tend to change slowly; which is a good thing if you have a hundred million lines of code to maintain.