The way I did it for our 2006 competition entry was to draw as much of the map as I could fit onto screen, plus 2 additional tiles in all directions to allow for a one sqaure move/scroll cycle and also speciall effects that could potentially 'shake' the map.

Then when the character moved, you scrolled what you had before beginning a redraw cycle which mostly consisted of blitting the remaining portion of each layer onto the new buffers before drawing the bits that needed filling in.

Apart from the fact I picked unDelphiX to do the graphics, the mechanism I described above worked really well.