This was the approach taken by gNewSense in its first release. Their cleaned-up kernel eventually became Linux-libre and the approach evolved in response to problems and changes in Linux.
One major problem was that some drivers would work just fine, or in a degraded way, without the blobs. Some were patched, but others were removed taking out useful functionality (video capture and graphics come to mind).
The changes in Linux were the widespread adoption of request_firmware(). We had already developed technology to selectively remove parts of drivers that contained blobs, and since moving firmware about didn't make any difference as to the ethics of providing or using them, we figured we'd be better off retaining the same functionality that we had when the blobs were part of the drivers. This implied disabling the blob requests.
However, instead of simply logging an error, like we did before, we figured we could use the hotplug interface to notify userland about the lack of Free firmware for that driver, so that's what we did. It's arguably better than silent (or quieter) failure to work, and it doesn't stop anyone who wants to use the blob from installing a driver that will take it.
That's where we are now, with a couple of plans to enable users to use blobs without having to install alternate drivers.