Sometimes ripping the sound to a wav file and recombining will fix it, so try that first.
Find the bad frame:
Audio sync will go out when there is a video frame data error and the following frames are out of sync. To find this spot:
open v-dub/video & audio to direct stream copy/file/open video file
then, at the bottom of the open video file menu click on the bullet (ask for extended options after this dialog)/left click twice on the file that you want to check
left click on bullet (re-drive keyname flags)/ok
The procedure will now run until it finds the first damaged video frame, note the frame number. Close v-dub, re-open and video & audio at DSC and open file as normal, use slider or frame forward, etc to go to the bad video frame (number recorded). Some of the immediately following frames will probably be bad as well; the frame forward button will check them for you. Sometimes the whole keyframe will be bad. Split/edit the bad frames.
Run redrive keyname flags on the remainder, etc.
Open the file in virtual dub and under audio click interleaving. In audio skew correction 1000ms = 1 sec. Use negative numbers when the sound comes after the movement; use positive numbers when the sound comes before the movement. Move in increments of 1000 at first. Direct stream copy the video and audio and save as avi.
A little trial and error then you can get it perfect. Once you get it to within +-100 of being right it'll be close enough and won't be noticeable.
If the sound is out a different amount at different points (the norm) in the movie then you can try this and it sometimes works.
Split the file into 2, 3 or maybe even 4 parts depending on how bad the sound is out of sync, and correct the different parts different amounts as necessary to get it right. You can rejoin them by opening the first file in virtual dub then clicking "append avi segment" under file. Choose the next piece and so on, and direct stream copy and save as avi.