It seems like a very good start - the security manager is necessary for the sandbox of the whole set of other things that you do not explicitly mention (for example, prevent the user from disabling the security manager, of course, and be able to call arbitrary commands, or use native code or get the OS for exec files and etc.). I assume that you start with zero permissions and just provide explicit permissions.
A security manager cannot deal with denial of service due to overuse of resources, but your other controls are likely to address this (prevent network connections, use of a control disk, timeouts to prevent a processor from freezing - if that's what you mean my timeouts).
You say "extremely limited file system permissions" - I hope this also includes disk quotas? Do you use several untrusted processes and do they share disk space? Perhaps the problem with processing the files may be a problem (not sure how they are managed for a limited account).
Separate JVM vulnerabilities still exist, so the risk depends on what is still on the server and what are the real consequences of the problem (how bad is it if you need to erase the server?).
See also: Sandbox against malicious code in a Java application and Running external Java source code on a server - security and resource limitation?
source share