The fact it will open when the subassemblies are loaded into RAM suggests that perhaps the file references stream of the top level assembly is corrupted.
1. Try go to file > open
2. Select the file in question
3. Change the configurations to advanced
4. Open file
5. A dialog will open up, choose to create a new configuration showing assembly structure only
6. Try unsuppress the files.
If you can get this far you might identify a problem in which you can do a replace component on.
Otherwise you should try restore a backup of the top level assembly.