I have a an additional but related problem in 12.04. Even when a program displays the correct icon when you start it one can not permanently hold it in the Launcher. It will stay until one does a restart but after that it has disappeared.
The problem is only present when the launchers are in a subfolder of ~/.local/share/applications as are most wine applications which are in subfolders of ~/.local/share/applications/wine .
The workround is to copy or move them to ~/.local/share/applications
The proceedure in my posting #10 above then seems to work for all the programs I have tested.
Picasa (which is started by a script) is slightly different and needs the one to copy the picasa.desktop file from /usr/share/applications to ~/.local/share/applications and add the line StartupWMClass=Wine to the bottom of it to prevent it showing up as a Wine Launcher in the Unity Launcher - another little mystery! I added the line with a space at the begining to prevent the script in comment #10 commenting it out again.
Launchers copied to the desktop also seem to work as long as there is also a copy in ~/.local/share/applications