If you want collision detection at the bit level you are in for some serious work. You should be able to detect collisions at the byte level by reading back what you wrote to the bus. That implies a protocol with a node ID as the first byte and an "open collector" bus so the clashes don't cause any hardware problems. Or if you aren't worried about priority you don't need a node ID.
This can be done with RS-485 if you think outside the box WRT wiring up the transceivers.