Hi,
Some remarquable job done by Emanuel Paz 
He managed to implement a software USB stack on the old PIC16F628/628A : http://www.lendlocus.com/?q=16fusb
The project is hosted on SourceForge : http://code.google.com/p/16fusb/
While the PIC16F628/628A has been overclocked to achieve this, it would be easy to stay within standard specifications by using a new enhnaced core PIC16F1xxx as they run at 32MHz.
Regards