I have come as far as you in identifying the newmenucontroller service as a potential candidate, but no further, too. The service uses some SetImage function, which is not exposed through any api. So I assume that, independent of the programming language, you have no chance to set image icons in drop down menus withour adding code and recompiling oo, which is not good for redistribution ...
One other idea I did not yet follow up: How about (temporally) abusing the .uno:AddDirect dispatch along the following steps ?
1. Identify, where newdocumentcontroller gets the config for the menus from. http://lxr.go-oo.org/source/util/svtool ... ns.cxx#493
may be a help here ...
2. Overwrite the configuration with the wanted configuration data
3. call the popupmenu via .AddDirect
4. restore the original settings
This workaround would by a very dirty workaround, though ...