I tried this once. It's really rather difficult, especially if the driver is expected to convert the image from what the hardware sends to what v4l is expected to provide.
Also, webcams usually work in isochronous mode and have a lot of data being transferred. The usb sniffer that I used had a great deal of difficulty keeping up, and I'd end up missing a lot of URBs, or end up with truncated URBs, which was even worse.
The most frustrating thing of all was that it seemed like I was constantly rebooting. Because webcams use isochronous tranfers, the drivers have to reside in the kernel, to turn interrupts off and other nonsense. You can't use libusb or even UML. Also, you may not panic the system, but if you cause an oops, it's highly likely that you'll have to reboot before you can use any USB devices again.
If you're still interested, I can send you a stub file that uses usbvideo for the bulk of the work. usbvideo provides a wrapper to make it easier for drivers to implement the v4l api. Then all you'll have to do is the actual talk-with-the-device part of the driver.