I thought a bit about whether or not to include the check.  I opted for option 1 because it was the simplest and didn't detract from the intent of the example.  The way I see it we have three options:

1. Don't include the check: The pro is that we keep the code simple.  The con is that this implementation of IDisposable isn't idempotent.  Fortunately, it's pretty difficult to mess up using a "Block" by calling Dispose twice
2. Include the check without thread safety: The pro is that the code is still simple and idempotent.  However, we'll want to write a comment explaining that this code is not thread safe.
3. Include a thread safe check: This code isn't quite as simple, and I'm worried that the extra code will slightly distract from the actual example.

I've changed positions and I'm now in favor of option 2 > 3 > 1.  Thoughts?