I think the main improvment happening in J2ME is that the number of different implementations is decreasing.
Sony-Ericsson, Samsung and Nokia all release J2ME platforms that are consistant across a large number of device models. This means that by testing on under 10 devices, you can actually deploy to many millions of handsets.
Unfortunately, this does nothing to relieve fragmentation at the Mobile Network Operator level so you still really need to retest those 10 devices for every country you deploy your application to. This is THE major issue these days.
J2ME is getting more and more integrated with native functionality on the device (OMA DM, DRM, content-handling...) and that unfortunately tends to highlight gross inconsistencies in the J2ME specs themselves. That's not reducing fragementation one bit.
The quality of J2ME implementations, and of mobile phone manufacturers software as a whole, doesn't look like it is getting significantly better fast enough so having to deal with many firmware versions (some bugs get fixed, some others get added) is also a major issue.
There is no end in sight for some of these problems.
The toolchains (there are also several of them) are improving at a relatively slow pace but the focus is all on improving development on single devices instead of hopelessly trying to fix fragmentation issues that aren't rooted in the tools.
Even after all that, the economic realities of the mobile industry mean that J2ME won't disapear as the development platform of choice for several more years.