That sounds pretty similar to what Valgrind does, basically runs your program in a VM with that kind of instrumentation. The details of how it works are way past the boundaries of my own knowledge though :)
The operating system could effect this by not providing any page tables to the CPU, so every memory reference faults and the OS has to handle them all.