The main reason might be that people are speaking in accents that you don't know. For example, if your English teacher was from the south of England, you might not easily understand the speech of, say, Danny DeVito, who speaks with the accent of a New Yorker with Italian ancestors.
Also, because it takes longer to read and understand than it does to hear and understand, subtitles have to be simplified a lot. This makes the text a bit easier to understand.
There are lots of other reasons as well, but I think these are two of the main ones.
I have a slight hearing problem, so I usually watch TV and DVDs with the closed captioning on. For the most part, the subtitles are pretty true to the spoken dialog. I think, like Rewboss said, that it's a matter of accents and speech patterns. Some people drop the last letter on words, some slur syllables together, and some talk very fast. I'm a native speaker, and there are some films that I've seen at the cinema where there were entire conversations I didn't understand until I later watched at home on DVD the subtitles.