BTW I also get the same behavior when I run the osgearth_controls.exe example. I get a little white rectangle where the osgearth.gif is supposed to be.
I did some investigation of Controls.cpp and it looks like this line of code in Control::getGeomStateSet() is the culprit.
If I comment it out both my application and the osgearth_controls example display the image properly. I thought of a solution where I could derive from ImageControl, call getGeomStateSet() somewhere inside that class, and set inherit shaders to true in the virtual program. Unfortunately this didn't work and I think it is because the geometry state set gets created each time the function is called even if it already exists in the static member variable.
It looks like both getGeomStateSet() and getImageStateSet() create a state set each time they are called. Am I interpreting the code correctly? If so, should they be doing that?