Here is a thoughtful blog post about why people choose a programming language to use. The key question is why many people's favorite languages, like Lisp, Smalltalk, or ML, have not won the battle for the main programming language in use. The key answers are (in my order, not the article's) libraries, IDEs, documentation, and performance.
The article is overall insightful, and seems to have a lot of the ideas exactly right. I would have liked to have seen it go one step further, to argue that because dynamic languages make it hard to build tools for programmers (like great IDEs), they are less likely to become dominant languages. That's currently my big frustration with the scripting languages of the day: there are two great boosts to programming productivity from the last 20 years: garbage collection and static typing. Why do scripting languages provide one, but not the other?