Are determinants always real?
A determinant is always a member of the field (or ring) that the matrix entries comes from -- for any given size of the matrix the determinant is a particular polynomial in the entries. Thus, if the matrix entries are all real, then so is the determinant.
But with, say, complex entries in the matrix it is easy to find a matrix with a non-real determinant:
$$\left|\begin{matrix}i & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{matrix}\right|=i $$
By the way, it doesn't really work well to define the determinant as the product of the eigenvalues, because some matrices have fewer different eigenvalues than the size of the matrix, and then you need to include some eigenvalues in the product several times, according to their (algebraic) multiplicity. But the way to define the multiplicity of eigenvalues is through the characteristic polynomial which in itself is defined using determinants!
Given a real $n\times n$ matrix $A$, its determinant is equal to the product of its eigenvalues. As you point out, even though $A$ is real, its eigenvalues may not be. However, $\det A$, the product of these eigenvalues, will be real. To see this, note that the eigenvalues of $A$ are precisely the zeroes of $p(\lambda) = \det(\lambda I - A)$ which is a polynomial with real coefficients (the coefficients are sums and products of entries of $A$). Therefore, if $\lambda$ is a zero of $p$ of algebraic multiplicity $k$, then so is $\bar{\lambda}$. As $\lambda\bar{\lambda} = |\lambda|^2 \in \mathbb{R}$, the determinant will always be real.
By its definition (sum of products), the determinant of a real-valued matrix is a real number.
If you diagonalize the matrix, complex Eigen values will come in conjugate pairs.