I am concerned that there are some simple misunderstandings of syntax of Mathematica code, which may look similar to other programming languages but may be very very different.
I am also concerned that the very small and very large numbers you are using in your differential equation may result in nothing but roundoff errors from the calculation.
Please study this and look at the result of running the calculation.
r = 0;(*defines the critical radius variable*)
For[i = 149999/10^5, i <= 150100/10^5, i += 0000015/10^5,
s = NDSolve[{Rationalize[x'[t] - (2.5*10^-25) ((1.2*10^31 ((9*10^-6) - (1.5*10^-3) t)(5*10^5 ((9*10^-6) -
(1.5*10^-3) t) - 1000000 x[t] + 3)(5*10^5 ((9*10^-6) - (1.5*10^-3) t) + 1000000 x[t] - 3)/(1000000000000
((9*10^-6) - (1.5*10^-3) t)^2 + 1000000000000 x[t]^2 -6000000 x[t] + 9)^(7/2)) - ((3 ((9*10^-6) -
(1.5*10^-3) t)^3-12((9*10^-6)-(1.5*10^-3)t) x[t]^2))/(x[t]^2+((9*10^-6)-(1.5*10^-3) t)^2)^(7/2)),10^-25] == 0,
x[0] == i*10^-6}, x, {t, 0, 1}][[1]];(*defines the differential equation to be solved with init.conditions*)
Print["x[.006]=", x[t] /. s /. t -> 006/10^3];
Print[Plot[Evaluate[x[t] /. s], {t, 0, 1/10}]];
If[(x[t] /. s /. t -> 006/100) <= 10^-10,
Print["True"]; r = r + 0000015/10^6,
(*else*)
Print["False"]; Print[Plot[Evaluate[x[t] /. s], {t, 0, 1/10}]],
(*else*)
Print["Neither True Nor False"]
];(*checks if zero at specified time-adds .000015 to r if true*)
Print[r]
]
This only does a small number of iterations and prints some diagnostic information for each iteration to try to help you see what is being done.
I have made a number of changes to your code and I hope that these are correct. There was a ] in the wrong place in your For. This is one example of how Mathematica syntax and semantics are very different from other programming languages.
I cannot tell if your final If was intended to both increment r and display a plot when the calculation was <= 10^ -10 or if it meant to increment when true and Plot when false. If both were intended when true then you should put a semicolon between the increment and the Plot. The differing meaning of semicolon and comma is another example of how Mathematica differs.
Because of the very large and small numbers, I believe the result returned from NDSolve is often incorrect. You can look at the output plot and then try NDSolve[..., x, {t,0,1}, WorkingPrecision->50] instead of just NDSolve[..., x, {t,0,1}]. That will attempt to do all calculations to 50 significant digits instead of 16 digits. You should see that the results are now completely different. If you then change the precision to 100 you should see that the results are again completely different. But even with these there are a stream of warning and error messages from NDSolve. You may see that I introduced Rationalize[..., 10^-25] around your differential equation and made other changes to try to force all coefficients to be much more precise and avoid many of your cofficients having only one or two digits of precision as entered. I still do not believe that the result is well posed and open to accurate calculations yet. The warnings about the InterpolatingFunction values lying outside the range are another hint that there are still more things that need to be changed before these results can be used.
If you can compare character by character the code you posted and the revision I posted and try to understand what the changes were then perhaps you can discover any errors that I made and perhaps begin to track down what further changes need to be made.