We receive dozens of emails everyday with people having problem synchronize the subtitles with their movie. I will write down few simple steps that will help you solve this problem.
First of all, the best packet (with player and encoders) for playing movies is K-Lite Codec Pack. You can download it for free from here:
Download K-Lite Codec Pack
When you download a subtitle their is a possibility that is not synchronized with the movie. You can download other subtitle and try again. Put there is a much easier way to do this.
When you play your movie with Media Player Classic (it is included in K-Lite Codec Pack) an icon appears on the Taskbar of Windows. This icon is for the DirectVobSub, a program that control the speed of the appearance of the subtitle and some other futures.

DirectVobSub
If you double click on this icon a window will appear. Click on the tab Timing

Timing tab
In the option Subtitle Timing their is a field called Delay. This field is responsible for how much time the subtitles will be in front or backward form the movie.
Attention: The field Delay is measured in millisecond (1 sec = 1000 msec)
Which means that if i play my movie and i see that the subtitles are backward (for example 14 sec) from the movie i will place the following value to the Delay field:
Delay = -14000 msec = -14 x 1000
Otherwise:
Delay = 14000 msec = 14 x 1000
To find how much time the subtitles are in front or backward form the movie you have to do a simple thing. Play the movie and record the time when the subtitles first appears (X) and when the dialogs start in the movie (Y).
Then if X > Y
Delay = X – Y
If Y > X
Delay = Y – X