The easiest way to create a "protected execution environment" is to just execute as an unprivileged user. The process can then only make changes to things the user has permission to change, which if you create a user specifically for secure testing, will be essentially nothing. Adding and deleting users is a single command.
The only reason this method would not be viable is if the process requires superuser privileges. In this case, you must use some kind of special sandbox or virtual machine. "Sandboxes" in general do not necessarily mean superuser privileges are viable, but they may (q.v.
I figured out by reading some articles that the best way to achieve this would be using a Virtual File System (VFS) and FUSE.
I'm not sure why you think this. A virtual file system is still just a filesystem, so it does not offer any kind of security WRT the executables in it. This is as "secure" as mounting a USB stick (containing a filesystem) and then running an executable stored on it. Just because the executable (or, in the case of python, a script/bytecode) is stored on a removable device (or a VFS) does not protect you from anything at all.
Likewise, I do not see how "File Versioning Systems (e.g. Partitioning)" offer any kind of security for the host system, for the exact same reason. That's not their purpose, BTW.
WRT looking for something that overcomes the disadvantages you list:
"no support for reproduction or committing" If by "no support" you mean it's not possible, of course it is possible. You can use whatever methodology you would normally use. If by "no support" you mean a VM doesn't include some kind of mind reading software, that is correct. Mind reading requires additional hardware ;)
"no mechanisms to check changes made by different processes" Ditto the last point. If you need to observe what a process is doing, you can do it however you would normally do it --
strace, profiling, whatever. There may be specialized sandboxes that do do this, but I think they will be specialized along particular lines.
On that front, I'm not a python user, but a quick google led to SandBoxedPython. I don't know if anything there includes tools to do tracing for you, but if the code you want to test is python, that seems a good starting place.