I think you hit the nail on the head. Build systems like GNU Make pull information about the file system to find out what has been updated. All we basically have to do is to
1) move from an information pull to a push. (Sidenote: This is something that 'kind of' works in OSX GUI, although it seems to me that 10.7 has broken this functionality for certain usecases. E.g. I'm connected to my host mac with my linux vm through SSH and when I've updated a file from within that VM, the host Finder windows get updated automatically and Preview.app windows get updated when I click into them).
2) Extend the functionality to runtimes as well, i.e. enable hotloading like in the new Unreal engine.
A possible approach is to consider the file system the image - consider a UI for managing a VM image and processes within that image.
The difference is then essentially deciding what is the center of the system.
The older image based language systems assume they are the center and all must pass through them - like a monolithic kernel.
Perhaps what could be explored is more transparent integration between language runtimes and file system objects.