Twilio Developer Evangelist here.
There isn't a way to modify the timeLimit on a dial while the call is in progress. But I think I have a solution that could work for you.
Instead of dialing the number directly you could call into a conference with a timeLimit.
<Response>
<Dial timeLimit="30">
<Conference>YourCall</Conference>
</Dial>
</Response>
Then when their account is replenished you could modify the live call to redirect to a TwiML url that rejoins the conference call with the new timeLimit:
<?php
// Get the PHP helper library from twilio.com/docs/php/install
require_once('/path/to/twilio-php/Services/Twilio.php'); // Loads the library
// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "{{ sid }}";
$token = "{{ auth_token }}";
$client = new Services_Twilio($sid, $token);
// Get an object from its sid. If you do not have a sid,
// check out the list resource examples on this page
$call = $client->account->calls->get("{{call sid}}");
$call->update(array(
"Url" => "http://youserver.com/conference.xml",
"Method" => "POST"
));
echo $call->to;