Gx=(({{-3, 0, 3}, {-10, 0, 10}, {-3, 0, 3}}));
Gx1=(({{-3}, {-10}, {-3}}));
Gx2=(({{1, 0, -1}}));
img=(({{0, 1, 0, 1}, {2, 2, 0, 0}, {0, 3, 1, 0}, {0, 1, 0, 0}}));

The filter is separable.

Gx1.Gx2//MatrixForm

Response with the usual filter operation.

(* image is padded with zeros for border handling *)
responseDefault=ListConvolve[Gx,ArrayPad[img,2]];
responseDefault//MatrixForm

Filter convolve with Gx1 and store the result in a temporary variable.

tmp=ListConvolve[Gx1,ArrayPad[img,{{2,2},{0,0}}]];
tmp//MatrixForm

Apply Gx2 on the previous result.

responseSeparation=ListConvolve[Gx2,ArrayPad[tmp,{{0,0},{2,2}}]];
responseSeparation//MatrixForm

The responses are indeed identical.

responseDefault===responseSeparation