wxWidgets does not seem to support custom controls with transparent backgrounds on Windows. A workaround for drawing something that needs transparency (like a rounded rectangle, or an image with the alpha channel) would be to first clear the background using the parent's color and then draw the content, like this:
void OnPaint(wxPaintEvent &event)
{
wxPaintDC dc(this);
dc.SetBackground(GetParent()->GetBackgroundColour());
dc.Clear();
wxImage image("button.png", wxBITMAP_TYPE_PNG);