As Nigel rightly pointed out (as he often does!) USB is complicated. Vey complicated. I recently developed a USB device for a PIC18F series - without the pre-written libraries fom microchip, I would have been utterly stumped.
Your idea of a 'pass through' doesn't sound too bad, but you must remember, you can't change packets on the fly, it must be buffered/stored first, looked at, and change accordingly. And because both the host and device are time/latency sensitive, by the time you've stored an entire packet for analysis, the host/device will kick up a fuss that it hasn't recieved anything.
As recommended, by far the best was is to use a software wedge between host software and USB drivers. The 'hardware' solution is actually quite good for things like serial, mouse PS/2, because of the slow speed and tiny packets (literally a byte per packet) but as USB packets are of a minimum of 256bytes, max 4096... it just doesn't seem feasable to me :/
Blueteeth