**You just have to checkof the rank of the matrix.**

When you look a discrete signals, it is customary to express their product the following way. If vectors are considered "column-wise", then you typically use the transpose operation:

$$ x[n_1,n_2] = f[n_1]^T g[n_2]$$ 

This implies that the 2D signal is of rank one or less (rank being the maximal number of linearly independent rows or columns).  Conversely, any (infinite) matrix of rank $0$ or $1$ is separable. [Note: the separation is not unique in general][1].




  [1]: https://dsp.stackexchange.com/a/35296/15892