OK, I got this working already. I used the standard Timer control and each time it fired I used the number of DateTime Ticks passed since the previous time it fired, to determine how far to move the PictureBox containing the Bitmap. I tiled a background too and it worked just as well.
I do think though that it could be ultra-smooth, if I used a Bitmap directly and not a PictureBox container. However, I then have to be clever enough to know which parts of the form to Invalidate() each time I move the Bitmap. I know in C++ there were "Regions", I'm about to check if there are equivelents in .NET...
I'm aiming this App at .NET 4.0.
Ohhhhh.... Old McDonald was dyslexic, E O I O EEEEEEEEEE.......
NOTE: My code snippets are just snippets. They demonstrate an idea which can be adapted by you to solve your problem. They are not 100% complete and fully functional solutions equipped with error handling.