Only just found this forum but these pages while a little dated are pretty useful for this type of thing:http://www.xsgeo.com/course/mig.htm
The way I tend to think of it is that the stacked section is a "zero offset normal ray section" - that is to say we have corrected the data to simulate what things would look like is the source and receiver were co-located (via NMO). Its a normal ray because the ray-path down to any given reflector make a right-angle (normal) to that reflector.
For flat events this is fine - the ray is vertical down to the reflector, and back up again.
For dipping events it means that the data is mispositioned, as the ray make a right-angle with the reflecting interface, not the surface.
Migration tries to correct this - but its based on a mathematical approximation (and a model of the earth) so its not perfect.
Time migration takes you to the "image ray" solution, which makes a normal with the *surface* that the shot and receiver are sitting on.
This doesn't take account of any refraction that takes place at interface boundaries or within a layer, so where you have rapid lateral or vertical velocity variations the ray is curved or deflected - so the data is still mispositioned.
Depth migration takes you to a vertical ray solution, where the reflection point in the sub-surface is directly under the co-located source-receiver.
This can be extended to pre-stack data, where the migration not only corrects the normal ray to an image ray (time migration) or vertical ray (depth migration), it also corrects the data to zero offset.