There are some great features in QGIS 2.6 atlas generation. You can for example filter visible polygons using an attribute from the feature controlling the atlas. So I have a full bus routes extent layer, and one with each direction. The two maps are thus filtered by the full extent layer. Data from Transport for London.

My rules look like:
regexp_substr( group,'(\\w$)') = 1 AND regexp_substr( group,'(\\w+)') = attribute($atlasfeature, 'route') AND $map = 'map1'
regexp_substr( group,'(\\w$)') = 2 AND regexp_substr( group,'(\\w+)') = attribute($atlasfeature, 'route') AND $map = 'map2'

Thus we can split the features into the two different maps in the composer. We can filter going and return using the "regexp_substr( group,'(\\w$)') = 1", since our routes are originally names 101-1 for example for the outgoing and 101-2 for the return.

The Vector Map District background map styling is thanks to Ross :
With slight modifications.

The jpgs are not as good, but Imgur provides hosting:
All London Bus Routes