FYI I am successfully catching this in the unhandled exception handler and the application does continue working afterwards:
private static void ApplicationThreadException(object sender, ThreadExceptionEventArgs e) {
if (e.Exception.Message == "NoDriver calling waveInPrepareHeader") {
//USB audio unplugged (typically the cause) - no other way to catch this exception in the volume level control due to limitation in NAudio
} else {
}
}