Jonathan Lapel demonstrates how to use drivers to dynamically change the subdivision level (or any other modifier parameter). It's a nice 'hack' to simulate level of detail.
Game engines have long used level of detail (LOD) meshes to save memory. The idea is to dynamically change the resolution of an object depending on its distance from the camera.
While it’s not a true level of detail mesh-swapping system, we can easily change the values of our modifiers based on how far away the camera or character is. This especially comes in handy when you have a large number of detailed objects in an animated scene.