I would use some kind of edge detection filter on zbuffer (could potentially be combined with edge detection in the color buffer) and then modulate the framebuffer with the result (inverted). One of the most common border detection filters is the sobel operator:
http://en.wikipedia.org/wiki/Sobel_operator
EDIT: Another cheap way to do this is before you make a regular grid, draw a black copy of the grid with the flip reversed, and the vertices move slightly in the normal direction. This is probably what they did in XIII, I'm also sure that it was done that way in Jet Set Radio.
EDIT2: If you want the thickness of the outline to be constant regardless of the distance to the viewer, you must scale the amount by which you move the vertices with that distance.
Andreas Brinck
source share