I think the command you are looking for is "colorcolumn", it is new to vim 7.2 or 7.3, I think.
Maybe you can do something with the CursorMoved auto command
autocmd CursorMovedI * set colorcolumn=match(getline("."),"\S")
You may have to play with this using intermediate variables, etc.
What would it do (if it is properly buried inside the function), one vertical line is placed in the initial character of the current line. It may be convenient, but you probably only need to put a switch.
EDIT: This turns out to be a little more complicated than I originally thought. Basically you need to eliminate the effect of literal tabs (if they appear in your file)
autocmd CursorMoved * let &colorcolumn=matchend(substitute(getline("."),'\t',repeat(" ",&ts),'g'),"\\S")
When I first brought it together, I realized that it was stupid, but, playing with it for a few minutes, I like the effect.
Please note that you may or may not want to have a version of CursorMovedI.
source share