I am currently using the binary formatter (Remoting) to serialize and deserialize objects for sending around my LAN.
I have recently upgraded from 2.0 to .NET 3.5. H
In the performance comparison linked by @Luke, notice that DataContractJsonSerializer performs very well compared to the other MS serializers.
Given the ubiquity of JSON, and the ease of which you can use DataContractJsonSerializer, I don't see much reason to use "protocol buffers". JSON will be easier to debug when bouncing between languages and platforms, and it will compress beautifully.
(I love how Google takes CS 101 concepts and becomes famous for implementing them. In C, we call "protocol buffer" "struct"s. They work great.)