I tried a few methods and got the weirdest results. This is what finally worked:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.myvmname</string>
<key>ProgramArguments</key>
<array>
<string>/Library/Application Support/VMware Fusion/vmrun</string>
<string>start</string>
<string>pathtovirtualmachinevmxfile.vmx</string>
<string>nogui</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>myusername</string>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
I created a file com.example.vmname.plist containing the above in /Library/LaunchDeamons and made sure its owner:group was root:wheel. the Apple developer tools provide an excellent editor for plist XML files.
This produces the following behaviour, which is ideal for my environment (I have a eight-core Mac Pro with 8 GB of memory and can afford to run several VMs in the background instead of suspending them or shutting them down):
When Mac OS X boots the VM starts up in the background. This also works for more than one VM.
If at any time the VM crashes it will be restarted immediately.
The same applies when the VM is being shut down or stopped unless done from the Fusion GUI (the latter behaviour allows for editing VM settings).
When Mac OS X shuts down, the VM suddenly stops. I have to find a way to shut them down more gracefully before a system reboot.