I can only answer from a position of some uncertainty about the internals of Google NaCl, but I know a little bit about MLton.
In theory, it should work. In reality, MLton uses memory in very specific ways and expects to have control over the environment. The main pitfall I can see is if NaCl restricts certain kinds of operations that may be performed in order to guarantee the integrity and safety of the execution environment. This link suggests this might not be a problem though.
Also, the C code that MLton generates is really, really wacky. Once again, it depends exactly what NaCl gives up in terms of the full generality of the environment in order to guarantee safety. You will have very little control over the code that MLton outputs, and rewriting the runtime is a massive undertaking should any modification be required. I would see if it works and then start tweaking any parts of the runtime system that cause problems.
As an aside, if you get MLton code running the browser, I'd love to see the results! :D