It get's kind of stuck if you choose unsuitable initial conditions. You can see that when you evaluate:
FindMaximum[{10^(-6) x^2, 0 <= x <= 10}, {x, #}, WorkingPrecision -> 30] & /@ Range[0, 10]
which basically uses different initial guesses in the interval. It is as I said above, Maximize is better. But if you absolutely want FindMaximum this does work:
Max[x /. (Quiet[FindMaximum[{10^(-6) x^2, 0 <= x <= 10}, {x, #}, WorkingPrecision -> 30] & /@ Range[0, 10]])[[All, 2]]]
which is really, really inefficient and slow. The Quiet is to ignore all (important) warnings that the method does not converge in the prescribed number of iterations.
M.