If something is affected by ambient light, I think covering is a good idea, although facing sensors directly toward the ground is also a very good idea for reducing this. What you could also do is paint parts of the sensor (e.g the sides of a photoresistor) to give it 'direction'.
I had a problem with my motors too. I guess there are 4 things you could try. The 3rd is obviously the most feasible / non stupid lol.
1) Put a brake of some sort on the faster wheel - bad idea
2) Reduce the power going to the faster wheel - could be done I suppose, but very fiddly!
3) Produce a control algorithm to detect how far the robot has gone on one side compared with the other. You could use shaft encoders or something like that. I would imagine with line following, great accuracy for motors is not needed unless you are going very fast.
4) Make one wheel bigger than the other - bad idea
I hope I have helped. These ideas are pretty lame, however.