As the responses show, there are a number of quick "probably real" tests.  In general, the problem is undecidable, however.  This is an easy corollary of [Richardson's theorem][1], which says that it is impossible to decide if two real expressions $x$ and $y$ are equal.  Assuming Richardson's theorem, note that $(x-y)i$ is real if and only if $x=y$.

As a more mundane example, that arises in common practice with Mathematica, consider the polynomial $p(x)=13x^3-13x-1$.  It's easy to see that all three roots are real (even if they don't look it), yet they don't pass any of the test here.

    roots = x /. Solve[13 x^3 - 13 x - 1 == 0, x]
    Internal`RealValuedNumericQ /@ roots

![enter image description here][2]

Given the undecidability, perhaps you might as well use some numerical evaluation, as in

    realQ[x_] := Internal`RealValuedNumericQ[Chop[N[x]]]

This seems to work for all the examples on this page, although, we could certainly find examples where it fails.


  [1]: http://en.wikipedia.org/wiki/Richardson%27s_theorem
  [2]: https://i.sstatic.net/KKEbT.png