Does the client broadcast it's version? Is it possible to determine which version of client are in use? When the client communicates to other clients does it transmit its version?  If so is it only on certain communications (i.e. originated transactions)?

Can this data be captured?  I would be interested to see if it is possible ot determine which versions are in use and hopefully combine that with geo-location data to map the bitcoin network by client node version.
When you connect to the other Bitcoin client, the first message you send is "version", which states your protocol version. Moreover, it states both your IP address, and the addres you are connecting to. You can capture this data like any other TCP/IP data.