I try a very simple approach... I start the
GoPro a bit before where I want to make the actual start, ride the where I want to start the recording and make sure it is at an identifiable point eg road sign, cross roads whatever and then press START on the Garmin. I take the same approach but in reverse at the end of the ride.... ie I stop the Garmin at an identifiable point then stop the GoPro just after.
In Windows Movie Maker I crop the start and end points of the video to match the stop/start point on the Garmin. That's about it.
However, the tricky bit is if you have to stop the riding for any reason... eg traffic lights. I've played around a bit with that but haven't found a really good way to handle that. I suspect the easiest way round it is to take the Garmin out of Autopause and just record the stop on both the Garmin and GoPro so they stay in sync... not sure if that makes sense.
I've done a couple of recordings like that in the Uk and the need to stop has worked okish... however most of my recordings have been in France where there has been no need to stop as traffic is so light as are things like traffic lights. these recordings have worked out great. It does make for a hard ride with no stopping though and as most of the rides where I am in France have Cat 3 and 4 climbs everywhere it keeps the pressure on.
There is a slight tendency for Garmin gradient readings to slightly lag the video but nothing much. This can be improved by tweaking the start point of the Garmin recording.
I don't know if any of that helps.... what I can add is that the times I record like this and play on BigRingVR have consistent times to those I record in real life, including Strava segments.