>>633
無理だと思う

class X a where -- 問題の型クラス
  methodA :: a -> Int
  methodB :: a -> String

instance X YourType where -- >>633のライブラリ内で
  methodA = ...
  methodB = error "X YourType: methodB is not implemented"

foo :: (X a) => a -> IO () -- 第三者(>>633のライブラリの存在を知らない)のライブラリ内で
foo x = ... -- ここでmethodBを使う

たとえばこういう状況で、>>633のライブラリのユーザが、
YourType型の値にfooを適用したとする
でも、この時点ではfooはコンパイル済みなので、fooがmethodBを使っていることがGHCには分からない
fooをコンパイルする時点では、YourTypeのことをGHCが知らないので、やはり警告できない

型クラスを定義するのも自分なら、メソッドにDEPRECATEDプラグマを付けるという選択肢があるけど、
その場合どのインスタンスについても警告が出る

一般論としては、undefinedじゃなくてerrorを使ってなるべく分かり易いメッセージで例外飛ばすのがいいんじゃないか