Microchip has a USB stack which works with the PIC18F2550/4550 (28/40 pin) for CDC and they also provide Virtual COM Port drivers for Windows/Linux/OSX. It's fairly simple to link it with your code - even using PicBasic Pro. Here are their specs...
The drawbacks - the chips have 1/8 the Flash/Ram of Atmel chips and run one instruction for every four clock cycles which is like living in the Middle Ages compared to Atmel.Universal Serial Bus Features:
• USB V2.0 Compliant
• Low Speed (1.5 Mb/s) and Full Speed (12 Mb/s)
• Supports Control, Interrupt, Isochronous and Bulk Transfers
• Supports up to 32 Endpoints (16 bidirectional)
• 1 Kbyte Dual Access RAM for USB
• On-Chip USB Transceiver with On-Chip Voltage Regulator
• Interface for Off-Chip USB Transceiver
• Streaming Parallel Port (SPP) for USB streaming transfers (40/44-pin devices only)
What I do not understand is why Microchip can do this on their rather primitive chips but Atmel cannot (or will not).