In my spare time (which admittedly isn't much), I'm writing a clean-room implementation of the Bitcoin peer-to-peer protocol in Java. I figure it's always good to have multiple implementations of the protocol, competition being the free market's way of regulating.
It's not a particularly complicated protocol. The Script engine is probably the most difficult part. You can find the protocol specification
here. That's what I've been going off of.