IllI'll expand on the other answers here.
Wind: The biggest factor in this is wind. Winds at common cruising altitude can sometimes reach well into the 100 Knot spectrum. Keep in mind that this can be in any direction. So lets say a long haul flight has a 100 Knot headwind half the year and a 100 Knot tail wind for the other half. ThatsThat's a 200 Knot ground speed difference which can really make an impact on flight time.
ATC Holds Vary: ATC for various reasons may put a plane into a holding pattern on arrival. This may add to the time spent in the air for a given flight depending on the hold.
Landing Slots: There are 5 high density airports here in the US (and presumably others elsewhere) that require planed ahead landing slots. If the slot time changes but the departure time remains the same an airline may chose to slow the plane a bit (or speed it up a bit) to compensate.
Aircraft Loading: Aircraft efficiency (and subsequently speed) will vary a bit with the loading of the aircraft. Since not every flight on a given route is loaded equally there may be efficiency gained or lost as a result of loading.