なかなか面倒な問題ですね。

常に描画前に、IDirect3DDevice9::TestCooperativeLevel()をやって、
D3D_OKなら描画、D3DERR_DEVICELOSTなら待機、
D3DERR_DEVICENOTRESETならResetという感じでしょうか。

うちの環境では、
スクリーンセイバー起動や、ディスプレイの設定変更の場合は、
復帰できるロストでした。
nViewはレアっぽいので、デバイスごとロストはとりあえず放置です。

ただ、フルスクリーン時に、Alt+Tabを押すと、
D3DERR_DEVICELOSTになったままResetできる状態にならないのですが、
この場合はもう一度CreateDeviceするしかないのでしょうか。