That's going to depend on a number of things. If your screen is small, then you may be able just to set DoubleBuffered on your Form properties, and get away with it - if you don't get away with it, then the movement will all slow down.
If that happens, then it gets a little more complex:
Override OnPaintBackground, and don't do it, if this is a timed paint. (if it is the result of a normal move, re-size or whatever, you must erase the background.
protected override void OnPaintBackground(PaintEventArgs e)
{
if (!timedPainting)
{
base.OnPaintBackground(e);
}
timedPainting = false;
}
Then you must erase the tail block yourself.
Sounds simple? It is, sort of. It's just a lot of work to get right.