# Octave, 577067 51 bytes

@(A)all(sum([A A' (d=@spdiags)(A) d(rot90(A))])==1)


Takes input as a binary matrix with 1 representing a Queen and 0 representing an empty space.

Creates an anonymous function that first concatenates the input matrix and its transpose.

spdiags creates a matrix with the same number of rows as the argument, with the diagonals turned into columns (zero-padded as necessary), so concatenate spdiags of the input matrix to get the diagonals and spdiags of the input matrix rotated by 90 degrees to get the antidiagonals.

Now take the sum of each column and each is exactly 1.

Sample run on ideone.