If you look at real hardware (or FPGAs) they will basically do polling: The input gets sampled at each clock cycle and will then get processed. And hardware is definitely realtime :)
The downside of polling is that you burn CPU resources when actually nothing happens. Interrupt driven designs help there.
Smiley noted; I think we can agree that "polling at 10s of MHz on an input pin" becomes something quite different than "polling at 10s of kHz on the other side of a USB link".
you're also more likely to get more than you want, and have to debounce on the processor side.
I'd go for a small fpga->ftdi usb controller. do a low pass filter on each pin, and when it goes above your threshold, throw it in a fifo that feeds the USB chip. your latency goes up with the number of changes that happen at once, but you're still using raw USB and not miss events that you're interested in.
Is there any specific product you can recommend for a hobbyist's project?
But yes, might very well want some configurable low-pass/debouncing logic.