You are pardoned.
The reason that C, and less C++, (among other language as VHDL) is used for these kinds of devices is that it is easy to translate from the language constructs to the underlying hardware. C is considered lingua franca, understood by many and to port a new language to the device, especially if reading/writing to registers is awkward, is not worth the effort if the language isn't much better at expressing useful constructs.
The examples that you use as newer, shinier languages, D, for example, could be a candidate for a "low-level" language if more programmers use it. D is touted a the modern C++ without all the compromise with C and implemented right from the start. Unfortunately without all the C++ libraries. I think you can call C libs from D.
The question isn't if it is newer, the question is if they are better tools. As far as I can see, it isn't the case.
edit
When I have written embedded code (in C) I have wished for a better macros/templates than C can offer. As it is a compile time construct, it really has nothing to do with the underlying hardware. But much more complicated to implement in a compiler.