Once we have an AST, I can picture how to implement some features (getters/settings, maybe block scoping).
Two pieces that I think could be useful, if someone were to implement this are esprima and escodegen . When looking at esprima, be sure to check out the harmony branch.
Another related project is Narcissus (https://github.com/mozilla/narcissus/wiki). Narcissus is a meta-cirular evaluator rather than a compiler, which I take to mean that there will be a performance hit likely to make it unacceptable for use with IE 7 & 8. However, performance on IE isn’t relevant anyway since this implementation relies on features only found in recent SpiderMonkey engines (and thus also won’t run in Chrome be default).
While on the topic, I should probably mention re-using some of the shims and polyfills out there (such as harmony-collections), as well as Traceur. Traceur is ECMAScript 6 input and ECMAScript 5 output.
One question I have is should the compiled output include polyfills, which can effect other libraries you use and would be unsafe in facebook apps, or should it all hide behind a function like Facebook’s ES5 library. As you can see in Facebook’s blog post, the ES5 wrapped code is less pleasant to read and they mention a performance hit. I suppose for extra work, such a compiler could support both.