Yes - stack overflows are tough to deal with. I have a plan that should allow NCrunch to tackle this tidily, though it will take a bit of work and fortunately these issues are relatively rare in a developer's workday (unless your writing some manically recursive code). You'll notice that when these happen, the engine should just throw up and error and then carry on as usual.
Oops looks like I might have posted a duplicate http://forum.ncrunch.net/yaf_postst70_Stack-overflow---infinite-runtime-of-a-test-causes-NCrunch-to-fail.aspx
However, for me NCrunch didn't carry on as usual :)
It would even be a good iterative improvement if the NCrunch engine gracefully handled an exception from one of the runners, if the process exits due to a StackOverflowException it could make a few assumptions (since catching a StackOverflowException within the same process is a slightly recursive idea in itself...)
You're right in that dealing with stack overflows isn't simple. A stack overflow will rip through any exception trap and will religiously take down the process executing the offending code. The key issue is that when the process runs out of stack, it often works its way into an invalid state. The CLR does have some reliability features to allow proper cleanup after a stack overflow as occurred, but these are limited to damage control and reviving the process is extremely difficult to do. I do have some plans on handling them more gracefully in NCrunch - through it will likely involve letting the process die a natural death and simply trying to improve the user experience and pipeline management around this. Stay tuned :)