I'd like to share with you a class for returning images in VSTO customizations of the Ribbon. When you check the callback signatures you'll realize that IPictureDisp is not a .NET thing. Yes... this is COM (something which will likely continue to surface when working with VSTO). I am aware of two ways to create an instance of IPictureDisp; use the AxHost class, or implement the interace yourself.
Using AxHost is easy, just subclass it to get to the protected GetIPictureDispFromPicture method.
Implementing the interface isn't that hard either, here's the code.