Albert Retey has demonstrated in a [similar situation][1] that you can use `"EventLocator"` to detect an event in `NDSolve`. For example:

    eqn = {\!\(
    \*SubscriptBox[\(∂\), \(t\)]\(u[t, x]\)\) == 1/100 \!\(
    \*SubscriptBox[\(∂\), \(x, x\)]\(u[t, x]\)\) - u[t, x] \!\(
    \*SubscriptBox[\(∂\), \(x\)]\(u[t, x]\)\), 
       u[0, x] == Sin[2 π x], u[t, 0] == u[t, 1]};

    NDSolve[eqn, u, {t, 0, 2}, {x, 0, 1}]

    

> NDSolve::eerr: Warning: scaled local spatial error estimate of
> ``5.741306825597143`*^13`` at <code>t = 0.4450518534682055\`</code> in the direction of independent variable `x` is much greater than the prescribed error
> tolerance.

When the stiffness happens, Mathematica will try to take an effectively zero stepsize. You can see that by

    NDSolve[eqn, u, {t, 0, 2}, {x, 0, 1}, 
     StepMonitor :> (laststep = thisstep; thisstep = t;
       stepsize = thisstep - laststep; Print[stepsize];)]
    (*    
    0.0000115314
    0.0000115314
    8.70237*10^-6
    ...
    ...
    7.88258*10^-15
    *)

So we can use the small step size as a criteria to test the stiffness, and stop the integration

     NDSolve[eqn, u, {t, 0, 2}, {x, 0, 1}, 
       StepMonitor :> (laststep = thisstep; thisstep = t;stepsize = thisstep - laststep;), 
       Method -> {"EventLocator", "Event" :> (If[stepsize < 10^-4, 0, 1])}]

Then the integration will stop when the step size is less than 10^-4, and the variable `thisstep` will be the point you are looking for.


  [1]: https://mathematica.stackexchange.com/a/7220/1364