This is one of those so simple but very effective tips out of Kent Beck's
rich treasure box of coding habits.
Yep. You don't want to check in your broken test. There's the assumption
that you end the programming session with unfinished work (that you
wouldn't want to check in). The broken test is the reminder of what you
were working and what to do next.
Or you can use a distributed VCS and have all the safety and convenience of
version control while you have no working change-set yet. I use Bazaar, but
it sounds like Git, Mercurial and possibly Darcs might be just as good if
your platform allows it (Bazaar runs on all my platforms and is unique that
way, afaik)