Why doesn't Mathematica solve x == Cos[x] properly?
Both Solve and NSolve fail with the message:
Solve::nsmet: This system cannot be solved with the methods available to Solve. >>
In this case you might use:
InverseFunction[Cos] ArcCos
One can see that this is valid only over the interval (-1, 1) which is probably why Solve does not give an answer:
Plot[{Cos@x, ArcCos@x}, {x, -Pi, Pi}, PlotStyle -> Thick] 
A few methods to find the intersection in the illustration:
N @ FindInstance[x == Cos[x], x] N @ Reduce[{x == Cos[x], -1 < x < 1}, x] FindRoot[x == Cos[x], {x, 0}] {{x -> 0.739085}} x == 0.739085 {x -> 0.739085}
I would be remiss not to point out that my plot above is only looking at real values. One can see that as implemented ArcCos does handle the full circle:
Plot[{Cos @ ArcCos @ x, x + 1}, {x, -20, 20}] 
Reduce[] returns a Root[] object, which can then be evaluated to arbitrary precision. $\endgroup$ Root objects, as returned by say, Solve[x^5 -x-1 == 0, x]. Of course, the root can be computed to arbitrary precision using the -Cos[#1] + #1 &. $\endgroup$ 0.739... as a "proximity indicator"; you can thus read Root[{-Cos[#1] + #1 &, 0.73908513321516064165}] as "the root of the equation $x-\cos\,x=0$ in the vicinity of $0.739085\dots$". You can apply something like N[#, 100] & to it, and the internal algorithms will then compute the root to higher precision. $\endgroup$ Another possibility :
FixedPoint[Cos[#] &, 0.5] (* 0.739085 *) &: FixedPoint[Cos, 0.5] $\endgroup$
NSolve[x==Cos[x],x,Reals]gives{{x -> 0.739085}}. $\endgroup$