The PDP context can be actively torn down, i.e. the UE sends a PDP deactivation request or there can be an inactive timeout in the GGSN. The timeout typically starts counting from the last transferred data on the PDP so for a PDP with continuous traffic the timer will be reset all the time.
Either the UE sends a PDP deactivation request before it is switched off or, if for example you pull the battery on the phone, it won't be able to and then you will instead hit the inactive timeout in the GGSN.
- the UE is out of coverage for certain time
PDP will be deactivated from GGSN if UE is out of coverage for at least the timeout period.
- the subscriber deactivated mobile data by pushing the mobile data icon on his smartphone
Would definitely send PDP deactivation request from UE to tear down PDP.
- the UE moves from the serving area of one SGSN to the serving area of another SGSN
I will admit I'm not sure if the UE, provided it is still within radio coverage of both serving areas, would signal PDP deactivation in the "old" serving area before moving into the new area. If nothing else, you will hit the timeout in GGSN.
- after being active too much time
This is rather rare in modern networks as mobile carriers want their customers to use as much data (they are getting paid for it after all) so you don't want to tear down connections. In addition, the UE will very likely send PDP create request so you will only increase signalling load by trying to tear down the PDP of an active UE.
Yes, simply not sending any data on the PDP for at least one timeout. In practice this is rare as the timeout is often set for hours or even days and modern devices tend to send various keepalives at regular intervals (minutes).
Another case is when the mobile carrier is performing planned maintenance on their GGSN and wishes to move sessions over to another GGSN by deactivating the current PDP contexts.