Step 1: Ship asm.js to every browser.
Step 1.5: Do a complete job of binding asm.js to all browser features. (My impression is that right now it doesn't do DOM manipulation, for instance.)
Step 2: Define a serialization of asm.js that is more like a traditional binary bytecode.
Step 3: Everybody compiles to that bytecode. No JS is in sight. Language diaspora slowly follows. Benchmarks start flying; JS, optimized as far as it can possibly be, still can't beat out more statically typed languages, though it only matters for the most performance-sensitive applications.
This is by far the most likely outcome at the moment, in my opinion. I'm not advocating or celebrating this (or necessarily upset about it, either), just observing the current landscape.