Using the CIC for double-duty would be tricky, I take it you've seen INL's recent posts on the subject. Seems like it can be done, but it would be an impressive accomplishment in itself.
What you're describing is similar to the starting point of my GTROM
The NES CPU can easily connect over USB if you use a chip like the FT232 or PL2303, it handles all the USB protocol-level stuff, and you get a dirt-simple data connection. The NES can send data at any time, but to receive data it will be missed if it's not constantly polling for it. I use these parts over the controller port, but if you're putting the interface on the cartridge, you have much better options. The FT245 would be great in that case, you won't have to poll and you read a byte at a time instead of a bit.
At least for PICs, the smallest USB capable one I've messed with is the PIC16F1454, it's about $1. With that I've been able to use Microchip's USB CDC (communications device class) library, and that seems to work. If you have an MCU involved, then you also need some kind of interface for the NES and MCU to communicate.
If on-cart USB is what you want, I would suggest the FT245. Then you'll need some logic to map the FT245 into memory, generating read and write control for it. Another thing is that chip has 2 status outputs, to check if it's ready for a read or write. For those you would create another readable register.
Maybe you could skip those status bits, assuming you can predict what it will return when you read when it's not ready (I'd assume 0, $FF, or open bus, but I don't know if it's specified). Then in your data you would use some kind of escape character to avoid sending that byte as data. But it's maybe a bit ridiculous to cut corners that much.
The reason I use a Game Genie with my GTROM kit, is so I can write to the cart while the chip is fully blank. You can use that to put a bootloader onto a cart, then you don't need the Game Genie anymore. You pretty much need some NES code to always live on the cartridge. If you don't want the Game Genie you could put an EPROM on the cartridge for the NES to boot into. You could also use RAM if you want the cart to write a little faster, could add battery backup maybe. If the speed really mattered.
You could have an MCU write the ROM, but that's going to require some hardware to prevent the MCU from conflicting with the NES.