57 70 67 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 of the concatenated matrix and make sure each column is exactly 1.
Sample run on ideone.