I'm getting a bit late, but, anyway, hope it's relevant.
I couldn't agree more with you djmpark. Only recently I've been using Mathematica (4 years+ of use) and it is my favorite software and working tool. But the truth is that it has stability and memory issues; I have often lost work because it crashed in the middle of a small computation, it consumed my machine's memory and so on.
Conceptually, I think it is a tool well ahead its time and I grant that it shouldn't be easy to implement, but my main critic is less the implementation and more the business model WRI uses to market Mathematica and to expand its user basis.
One basic fact WRI doesn't seem to understand is: Mathematica is disadvantaged because people are used to another programming paradigm. This could explain why another system, a far inferior software, is the prime modelling tool in universities (at least to the extend I've seen, I'm the only heavy Mathematica user I know).
I'm mentoring a newcomer in my work and it was hard to convince her that Mathematica was better for what we do. At the end, and that's more to the point I intend to make, she only set for Mathematica because it allowed her to connect to databases without having to buy expensive toolboxes. After a bit of a struggle to overcome the learning barrier, I (hopefully) enlisted another soldier to the Mathematica ranks, but so far it is the two of us against the department :-)
I guess the point I'd like to make is that people usually decide for a tool not because of some philosophical reason, but based on what they can get their hands on and make work. But Mathematica's paradigm already scares people away, and, apart the database example I gave above, it also seems to try to tie users' hands as much as possible.
Another example that comes to mind are the CDFs: it is a great idea, but when it comes to deployment, for example, it restricts the user from displaying external data. One example that comes to mind is gapminder, whose graphs are more or less trivially done in Mathematica... except for the deployment, which requires CDF enterprise; not really easy for any user to implement. A few years back we were approached by another institution to help create a similar thing; they were blown away by the graphs I produced with Mathematica, but would we be able to deploy it easily for a non-Mathematica user (the project was cut-off for other reasons)?
Anyway, I'm NOT advocating that Mathematica should be open source. In fact I'd be quite unhappy about it. But there's something missing on it that's hindering its adoption. I think it could be a great tool for people to, say, publish visualisations online quickly for their simulation results, currently people think about Java for such tasks. I'd love to see, for example, away of Mathematica producing compiled 'applets', which work independent of Wolfram interpreters. After all, if Mathematica is more than a software - it wants to be a language and a programming paradigm - users should be able to freely express the products of that language to others, without WRI trying to be the middle men.