Instead of increasing
DynamicEvaluationTimeout globally, it is also possible to just do so locally, e.g. with something like that (as the default is 6, this would timeout with the default setting...):
Style[Button["TestLong", Pause; Print["Result"],
Method -> "Preemptive"], DynamicEvaluationTimeout -> 8]
I would, if ever possible, only change such defaults as local as possible: there are good reasons why you want dynamic calculations passed via the preemptive link to timeout. I would also rethink the design of your GUI as in general I believe it's better to use something like
Method -> "Queued" instead of tweaking the evaluation timeout: if something takes a long time, it's probably not well fitted to be triggered through the preemptive link...
As far as I can see, the option
DynamicEvaluationTimeout exists and seems to work since at least version 6.0.2, but was only documented in version 8 as being new.