That is the case with overriding a non-virtual function - the compiler will compile it anyway, and most of the time it will work. That's what makes it so eeevil.

I saw today, or last night, someone suggesting a keyword to make non-virtual override explicit, and error otherwise. Which actually sounded like a really good idea to me, and also addresses this problem.
I think a combination of not-virtual-by-default, and an explicit non-virtual override keyword would cover your concern, and also minimise the use of virtual functions. Sounds perfect to me ;)
Overriding a non-virtual is actually very rare, and probably often unintended... I really like the idea of a keyword to make this rare use explicit.
 
It seems to me the decision is that of sacrificing a real and common problem
case with frequent and tangible evidence, for the feeling that the language is
defined to do the 'right' thing?

The right thing should be the default.

But I fundamentally disagree your choice is 'right'.. This is obviously subjective, so I don't think that's a fair assertion.
The problem was obviously not completely defined, and not addressed entirely.. I think the proposal above sounds like a better solution all round, it addresses everyones concerns, and adds a nice little safety bonus for rare non-virtual overriding ;)
But as I've previously said, I understand this can't change now, I've let it go :P