他のオブジェクトのデリゲートを保持して、
あとからデリゲートの削除ができませんか?
参照変数の参照とかがあるといいんですが…
↓こんな感じで。

class C {
ref Action a;

public void Set(){Console.WriteLine("hoge");}

public void F(ref Action _a){
_a += F;
a = _a;
}

public void Kill(){
a -= F;
}

}