You're right about the Achilles heel.
Apart from LCD screen resolutions, there are other factors like
* amount of heap memory,
* maximum size of MIDlets,
* processor speed,
* UI conventions,
* vendor-specific interpretation of J2ME,
* vendor-specific API, and
* vendor-specific bugs
For example, thought Siemens M50 and the Nokia 3410 have nearly the same LCD dimensions, the M50 allows fairly large MIDlets (70K, AFAIK), while the 3410 allows only 30K. On the other hand, the M50 is one of the slowest phones around, and doesn't have a compacting garbage collector. Then, these two phones also differ in their handling of images which are larger than the screen ~ M50 scales it to the screen size while 3410 allows it to exists as it was.
Because of differences like these, porting a game is a non-trivial task, even between phones which externally look nearly identical. So, it is very important to pick your target platform carefully before you start on a game project.