I tried out 3 of the "Virtual Orienteering" options that are available, UsynligO (https://usynligo.no/ ), GPS Orienteering (http://www.hippsomapp.se/?lang=en) , and MapRunF (http://maprunners.weebly.com/maprunf.html).
I think they all work similarly well at the actual orienteering part of the process. All three rely on your phone GPS to identify where you are, and have some settings to help set up how "picky" they are about the accuracy of your punches. So they perform about the same on the course. I'll just highlight (mostly) differences below.
UsynligO and MapRunF run on iPhone and Android, GPS Orienteering is Android only as far as I can tell.
UsynligO pushes your results to a central server and displays them for others to see on your phone, but does not put them up on a website (that I have seen). You can share/save/email/whatever the results from your phone though and it creates an IOF Results XML which can be loaded into Attackpoint/Routegadget.
GPS Orienteering and MapRunF also push the results to a central server and has them viewable on the web. You can't save them out to a results file as far as I can tell, we would have to copy/paste results to our own results pages. They also have kinda neat results viewers in the app that show your routes, etc.
All three allow you to save out your route track as a GPX file or upload to Strava (where you can save out a GPX file).
UsynligO lets you upload events through a web interface. I don't think there is any way to make an event private or require a special code to access the event. Events require that you upload a PDF "map". I think we might be able to password protect it or put a placeholder PDF if we didn't want to share the actual course map.
GPS Orienteering and MapRunF force you to create events in the app on your phone and push them up to the server from there. GPS Orienteering has an option to make the events private and will give you a passcode that you use to access a specific event.
UsynligO and GPS Orienteering work with formats we are used to using and can be created with Open Orienteering Mapper + PurplePen.
MapRunF is a little trickier and uses KMZ/KML files for the map and course which are possible to create but take more effort.
GPS Orienteering has the friendliest UI on the phone app.
MapRunF has a ton of settings/options that can be a little confusing.
GPS Orienteering and MapRunF have a way to "manually" punch a control or fix your results afterwards if you had trouble punching but were sure you are in the right place.