You are correct. The set_selectedImageId method does not get the job done. Since you persist the Id of the image, I would recommend doing a client-side web service call to the image service and populate the imageSelector as well as the image element displayed on the designer.
The best thing here is that this can be achieved in just a few seconds using Sitefinity Thunder. I have recorded a video to walk you through the process by adding ImageSelector to my designer with "no hands", sort of say. Here is the video (http://screencast.com/t/MMIreAW0QTe).
We are also now currently rebuilding the MediaSelectors to make them more straight forward for developers. I hope this helps!
By default, Thunder looks for all UserControl, SimpleView or CompositeControl descendants with no registered designers and the search is scoped within the same project.
So, if you have a solution with two projects A and B and somewhere within project B you click add a Designer for existing widget option, Thunder will look only into project B and list the classes eligible to be widgets and still not having designers associated with them using the ControlDesigner class decorator.
Sorry I didn't update you, your last post was the trick. Once I understood the list was generated by widgets without a designer, I was able to strip out hooks to the default designers that the other Thunder wizard had generated and was able to run the Designer for existing widget wizard without a problem. thank you!
Can you please create a widget in the SitefinityWebApp project using Thunder, then build the project and try to add a designer to this widget. Please check out the video I have recorded for your convenience.
If the issue still persists, you can open a support ticket and provide us with your project and the backup of your database in order to research the cause of the issue.