Existence of a non blocking and task yield framework for Arduino programming
I would recommend NilRTOS.
I like the fact that it's really minimal.
However, you might find that some libraries (which you would like to use) work in blocking mode and cannot be used with this RTOS, because they might do bad things (polling) or worse things (polling in interrupt context with other interrupts disabled).
But that will be the case regardless of the thread framework you choose.

You might want to try also femtoos.
I think that the code could be organized far better, which is one of the reasons I preferred NilRTOS.