1. Global interpreter-lock, and the effect that has on the ability to write multi-threaded programs.
2. False negative proof, the same issue Haskell has. The fact that it's "had its chance" to catch on and hasn't done so marks it as a failure (or "not production ready") in the eyes of people who make decisions.
Scala has better odds than Ocaml and Haskell for this reason alone.
3. The perception that there's a lack of libraries relative to, say, the JVM. I say "perception" because Ocaml has bindings to leverage the C libraries. However, it doesn't have the Java libraries, and those are proving to be an important asset even in un-Javay languages like Clojure.
On Scala, since I'm resigned to the fact that it is more likely to win (and find I like the language a lot) the unresolved question in my mind is: is Scala an acceptable ML? I like Scala a lot and I'm leaning toward "Yes", but I haven't worked with Scala on something big enough to have a fully formed opinion there.
4. (Small one.) The name. I would like it just as much if it were called FishGuts, but names matter in adoption. I think Ocaml's a fine name, but I'm weird.