In the current Linux kernel, there are few constraints on what part of the kernel a module can depend on or what data structures it can modify. And any fault in a kernel module can cause the whole kernel to crash.
Both of those issues make it really difficult for people to add new functionality to the kernel, and I think are significantly responsible for the long release cycles.
A microkernel isn't the only approach to achieving this kind of modularity--using a language with a little bit more error checking and support for interfaces would do the same thing without the overhead of a microkernel design. And adding runtime support for C++, natively-compiled Java, a JIT, Modula-2, Oberon, Modula-3, or any of a number of a number of other languages would be feasible. But my impression is that that would not stand a chance of making it into the distribution even as an optional module.