Implementing USB or Ethernet stacks requires reading documents carefully, going through tons of driver code from demo's and others plus lots of "digital probing" (WireShark, other USB analyzer tools out there) to make it work.
I think it is a good learning experience, but also quite a high learning curve.
Nevertheless, if you want to do anything at all with these peripherals, you need hardware. You can bake your own, it's not that hard (USB: tons of PICS, Ethernet: ENC28J60 or PIC32 + MII ethernet Phy like KSZ8051MLL, CAN: PIC with CAN and MCP2551, or MCP2515+MCP2551). Otherwise, get an evaluation board from Olimex or the other quadruple million vendors out there.
With any hardware in hands, I would search for demo applications so you can verify your hardware setup is working OK (SPI communication OK, crystal's OK, etc.).
If you understand the example application, it's your decision: spend a lot of time to write your own stack or search for a decent open source one and actually implement your application.