How to start programming your own Bitcoin client? I want to develop my own Bitcoin client in a language that is not yet supported. Are there any resources that can be referenced to help me, or any other future developer with the task, or is the source code for the official client (and other clients) the only thing to go by? Has anyone made some cohesive documentation of the Bitcoin protocol, that if followed would guarantee the finished client would be able to operate along with the existing clients?
I don't believe anyone has published a detailed spec anywhere if that is what you are hoping for.  There is some information on the bitcoin wiki, but your best option is to review the existing implementations.

Check out BitCoinJ (a from scratch bitcoin implementation in Java) and BitCoinSharp (a C# port of BitCoinJ).  They are not full implementations yet, but they are very far along and can do most of the tasks of a bitcoin client. 

No matter what language you plan to create your implementation in, looking at these is very valuable because they are very thoroughly commented and much easier to understand than the official C++ client.