DS>Как бы задать опции для современных компиляторов (g++ и MSVC++), чтобы такой код компилировался с ошибками, заставляя явно указывать virtual в определении деструкторов порожденных классов.
Никак. Поведение, описанное в стандарте — причем, не только для деструкторов, но и для любых виртуальных функций вообще.