I did a lightning talk on Protothreads at the ChennaiPy user group meeting last week. This post contains the code examples demonstrated during the talk.
The code was written to show how Protothreads work, but it is not the best way to implement Protothreads. For one, the examples use 100% of the CPU, because the scheduler does not block. For a more complete implementation, check the source code of the Kiwi project.
BTW, the term Protothreads comes from a co-operative multi-threading implementation in C by Adam Dunkels.