One thing I'm missing in this discussion is the point that CAN bus is a fairly high level protocol. You have lots of stuff already sorted out for you protocol-wise in CAN hardware (addressing, collisions, arbitration, whatnot) - you just use a CAN enabled micro and bam - you are receiving high level messages. Another way would be to use a SPI CAN hardware chip, I've seen Microchip has one to offer. This way you have a micro, SPI CAN translator and CAN hardware transceiver. TI Stellaris Launchpad had an ARM micro with CAN hardware inside, I'm not sure if the new iteration of this board has it. I've written a CAN bus sniffer for Stelaris, didn't post it anywhere yet, ping me if you want it for whatever reason.
While RS485 is just a specification of an electrical level of the network. You have to write (or reuse) all high level protocol by yourself. For single master network Modbus can be attractive - robust, industrial use, there are loads of free libraries.
I2C stands somewhere in the middle, but as others already noted - it's not meant to be used like this. I'd say it's better to do things properly adhering to world wide accepted standards even if it's just a hobby project. This way you learn a) new stuff b) proper engineering