Thanks for the feedback guys. This is very high on our priority list (specifically decoupling our code and the user code). Here's a quick note from @satishgn, who's working on this:
The plan is to have 2 super loops instead of main loop. The Spark
main loop will be a part of the kernel process and the Arduino's
setup() and loop() will go as a user task independent from the main
loop. There's some assembly progamming involved to do achieve this
part.
Hopefully by next weekend, the firmware will be suited for real
time user applications.