You can use two PictureBoxes and bring one below the DGV and nest the other. Then move the overlay to the right place..
both should be identical otherwise, i.e. have the same Image and the same SizeMode.
Here is a function that'll do it:
void overlayCtls(Control ctlBase, Control ctlOverlay, Control ctlTgt )
{
ctlOverlay.BackColor = Color.Transparent;
ctlOverlay.Parent = ctlTgt;
ctlOverlay.Location = new Point(ctlBase.Left - ctlTgt.Left, ctlBase.Top - ctlTgt.Top);
}
And the result:

Notes:
- You explictily need to do the nesting as a DGV is not a container, so it will not be enough to move it in place in the designer.
- You explictily need to set the BackColor to Transparent even if it was set in the designer. Looks like it will be taken from the parent unless set in code.
- The nested child control will overlay not only the
ClientArea of its Parent but also any Border.