I will show how to find out how "Marketing" works. You can adopt and adapt its features to suit yourself.
One can find how a plot theme works as follows:
Charting`ResolvePlotTheme["Marketing", Plot3D] // Map@InputForm //
Column[#, Dividers -> All] &
(* output is a somewhat lengthy list of options *)
The style of background in "Marketing" depends on three options, DisplayFunction, FaceGrids, and FaceGridsStyle. The display function manually constructs the rectangles using scaled coordinates so that they always align with faces of the bounding box. You can change the scaled coordinates to change their placement.
DisplayFunction /. Charting`ResolvePlotTheme["Marketing", Plot3D] // InputForm
(*
Charting`noShow[#1, Graphics3D[{{JoinForm["Round"], EdgeForm[{}],
Polygon[{Scaled[{0, 0, 0}], Scaled[{0, 1, 0}], Scaled[{1, 1, 0}],
Scaled[{1, 0, 0}]}, VertexColors -> {GrayLevel[0, 0.7], GrayLevel[0, 0.9],
GrayLevel[0, 0.7], GrayLevel[0, 0.5]}],
Polygon[{Scaled[{0, 0, 0}], Scaled[{0, 0, 1}], Scaled[{0, 1, 1}],
Scaled[{0, 1, 0}]}, VertexColors -> {GrayLevel[0, 0.9], GrayLevel[0, 0.5],
GrayLevel[0, 0.5], GrayLevel[0, 0.9]}],
Polygon[{Scaled[{0, 1, 0}], Scaled[{0, 1, 1}], Scaled[{1, 1, 1}],
Scaled[{1, 1, 0}]}, VertexColors -> {GrayLevel[0, 0.9], GrayLevel[0, 0.5],
GrayLevel[0, 0.5], GrayLevel[0, 0.9]}]},
{Thick, Gray, Line[{Scaled[{0, 0, 0}], Scaled[{0, 1, 0}],
Scaled[{0, 1, 1}]}], Line[{Scaled[{0, 1, 0}], Scaled[{1, 1, 0}]}]}}]] &
*)
Extract the background rectangles:
myBackground =
Graphics3D[{{JoinForm["Round"], EdgeForm[{}],
Polygon[{Scaled[{0, 0, 0}], Scaled[{0, 1, 0}], Scaled[{1, 1, 0}],
Scaled[{1, 0, 0}]},
VertexColors -> {GrayLevel[0, 0.7], GrayLevel[0, 0.9],
GrayLevel[0, 0.7], GrayLevel[0, 0.5]}],
Polygon[{Scaled[{0, 0, 0}], Scaled[{0, 0, 1}], Scaled[{0, 1, 1}],
Scaled[{0, 1, 0}]},
VertexColors -> {GrayLevel[0, 0.9], GrayLevel[0, 0.5],
GrayLevel[0, 0.5], GrayLevel[0, 0.9]}],
Polygon[{Scaled[{0, 1, 0}], Scaled[{0, 1, 1}], Scaled[{1, 1, 1}],
Scaled[{1, 1, 0}]},
VertexColors -> {GrayLevel[0, 0.9], GrayLevel[0, 0.5],
GrayLevel[0, 0.5], GrayLevel[0, 0.9]}]}, {Thick, Gray,
Line[{Scaled[{0, 0, 0}], Scaled[{0, 1, 0}], Scaled[{0, 1, 1}]}],
Line[{Scaled[{0, 1, 0}], Scaled[{1, 1, 0}]}]}}];
Instead of using the internal function, use Show for the display function. I copied the face grid and style from the output of ResolvePlotTheme.
Plot3D[Sin[x y], {x, 0, 3}, {y, 0, 3},
DisplayFunction -> (Show[#, myBackground] &),
FaceGrids -> {{-1, 0, 0}, {0, 1, 0}, {0, 0, -1}},
FaceGridsStyle -> Directive[AbsoluteThickness[1], GrayLevel[0, 0.2]]]

Giving colors to each vertex of the polygons in the background creates a gradient. It makes the back corners look like they're in a shadow. You can remove the vertex color options from the polygons and style them with a plain color if you wish. Or keep the options and change the colors and opacities.