Okay - there are some limits which can be extended that can resolve this - here is a Stack Overflow thread: http://stackoverflow.com/questions/5722320/sharepoint-2010-sandbox-solution-timeout
This is the PowerShell script I use (run SharePoint Management Shell as admin) to extend these:
$spCodeService = [Microsoft.SharePoint.Administration.SPUserCodeService]::Local
$cpu = $spCodeService.ResourceMeasures["CPUExecutionTime"]
# NOTE THE VALUE BEFORE THE UPDATE TO RESET LATER
$cpu.AbsoluteLimit
$cpu.AbsoluteLimit = 600
$cpu.Update()
$cycles = $spCodeService.ResourceMeasures["ProcessCPUCycles"]
# NOTE THE VALUE BEFORE THE UPDATE TO RESET LATER
$cycles.AbsoluteLimit
$cycles.AbsoluteLimit = 2000000000000
$cycles.Update()
# NOTE THE VALUE BEFORE THE UPDATE TO RESET LATER
$spCodeService.WorkerProcessExecutionTimeout
$spCodeService.WorkerProcessExecutionTimeout = 600
$spCodeService.Update()
#
# "SharePoint 2010 User Code Host" must be restarted in the services applet
#
After publishing, run this script to reset if desired:
#
# RESET LIMITS TO DESIRED DEFAULTS
#
$spCodeService = [Microsoft.SharePoint.Administration.SPUserCodeService]::Local
$cpu = $spCodeService.ResourceMeasures["CPUExecutionTime"]
# RESET CPUExecutionTime to normal running level (60 is SharePoint default)
$cpu.AbsoluteLimit = 60
$cpu.Update()
$cycles = $spCodeService.ResourceMeasures["ProcessCPUCycles"]
# RESET ProcessCPUCycles to normal running level (100000000000 is SharePoint default)
$cycles.AbsoluteLimit = 100000000000
$cycles.Update()
# RESET WorkerProcessExecutionTimeout to normal running level (30 is SharePoint default)
$spCodeService.WorkerProcessExecutionTimeout = 30
$spCodeService.Update()
#
# "SharePoint 2010 User Code Host" must be restarted in the services applet
#