Could be due to problems with the drainage/outlet pipe. A heater fault should cause the machine to stick in the wash cycle and stay there. Poor fill water pressure will also slow the cycle.
Adding time to a wash can be normal behaviour if it does complete by its self.
Adding time is done because the machine has not been able to complete the full cycle in the original amount of time. As has been said slow filling or draining will cause it. As will a scaled up heater, unbalanced loads also contribute.
You say its taking twice as long? How much time to each program ?