WM_DESTROYの中でサブクラス化されたり解除されたりする場合などを考えていくとなかなか一筋縄ではいかないようで、ようやく何とかまともに動くものが出来ました。ウィンドウフックが使えればもっと簡単に出来るのですが。。
そういえば、2.11以降のcoredll.dllからはSetWindowsHookExがエクスポートされていますが、Windows CE Developers FAQによると、使えるのはWH_JOURNALRECORD, WH_JOURNALPLAYBACK, WH_KEYBOARD_LLだけということです。