I can understand how hypervisors might virtualize CPUs, disks, etc., because those have well-published, generic standards (e.g. ATA/SCSI, the x86 virtualization features, etc.), but how do hypervisors virtualize hardware like GPUs, Bluetooth controllers, Wireless LAN adapters, etc., which often need drivers before they can even be recognized properly?
They don't. They either virtualise a reference implementation (for example a specific basic VESA based card), or very simply passthrough the ports they are connected to directly to the VM and let it handle that.