Plague cuts off land and sea trade.
Siege cuts off land trade.
Blockade cuts off sea trade.
Rebels cut land trade by 50% on a particular route. Note the AI does not seem to distinguish between routes that actually have trade and those that don't (they can appear on a road to an enemy city).

Land trade:

Will terminate at the first city on a particular road.
Will follow both legs of a fork (but apparently only one leg of a second fork).
The level of trader does not appear to affect the number of trade routes from a city.
Something else does appear to affect the number though :) For instance I have seen cities with a Great Agora have 6 routes (Artaxarta) or 5 (even when others are available).
Anomalies: Palmyra to Hatra has no trade route either way. Lepcis to Cyrene no trade route either way.

Sea trade: Selected by closest port with the proviso that there is no land trade. For instance Sardis and Pergamum don't export to each other (but do accept imports from the other).