Solved the problem... the Bitmap class can be cast into an HBITMAP & then selected as an HDC to be copied into the surface. Heres the fixed code:
MemoryStream^ ms = gcnew MemoryStream(br->ReadBytes(TILE_BITMAPSIZE));
Bitmap^ bm = gcnew Bitmap(Image::FromStream(ms, true, true));
HBITMAP hbm = (HBITMAP)bm->GetHbitmap().ToPointer();
HDC src = CreateCompatibleDC(NULL);
SelectObject(src, hbm);
HDC dst;
BitBlt(dst, 0, 0, Width, Height, src, 0, 0, SRCCOPY);