You can use scrolling textures, which are textures that are animated in their .vmt.
For moving pieces of the environment (trees, buildings, etc), you will need to use several trains that move from the front of your train to the back (these can have models parented to them if you use nodraw for the trains). The physical train you'll be standing on the whole time, however, will not move at all.
For an example of the effect that you will be generating, take a look at ctf_cruise.