I'm afraid to say that the best bet you may have is to fun a trace on the program and let it sit for a while... overnight possibly.
Since it may be a different thread that kills the program or provides a callback to another thread, the best way to start is to place a bp on all termination function calls and determine which thread closes the app and where.
When you run your trace (on the thread with the terminator) let it run untill it hits that last api (the one that kills that app), then look back and see what comparison and jump was taken, or not taken to wind up there.
BTW, you should be putting BP on the return of api's becasue some apps emulate the first few instructions of them and then jump into the center of them. Many Api's are just wrappers for other API's in the nt.dll, find out if any of the api's you are calling end up there. This program may be calling the nt.dll's functions directly.
If the Application is using some kind of internal countdown timer (as JMI suggested), perhaps you could use a memory searcher like T-search and do a search for an unknown integer, wait a few seconds and do a second search for a integer value that has decreased. A few of these and you will find the value (in memory) that is counting down. Attach a debugger and place a memory write bp on that address to see what is modifying it...
nop or modify that code.
What is the Demo App called??? I'll have a look at it.