I finally did solve the problem (long ago) and am now updating the question. The issue was that the stream needs to be rewound before OleLoadPicture. The code I added to fix it and make it work was:
LARGE_INTEGER li;
li.QuadPart = 0;
pImageStream->Seek(li,STREAM_SEEK_SET,NULL);