I've encountered the same problem before and tried a couple of options.
Let me sum them up first:
Option 1: Change cursor shape.
Ref: http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes
Result: This won't work for me
Option 2: Change cursor colour.
Ref: http://vim.wikia.com/wiki/Configuring_the_cursor
Result: This works but will change terminal cursor after leaving vim. Not acceptable to me.
Option 3: Change cursor line colour
Ref: How do I change the vim cursor in Insert/normal mode?
Final result: Option 3 works best for me, with a little more code to define Cursor
colour in theme.
In vimrc, add these:
autocmd InsertEnter * set cul
autocmd InsertLeave * set nocul
Then, in your theme file, set Cursor
to be a little darker than background. For example
hi Cursor ctermbg=black
hi Normal ctermbg=darkgray
After adding these settings, when you enter visual mode, the line will be darker so you can recognize it easily. It works a bit differently in Gvim but it's quite acceptable to me. Besides, you will forget Gvim totally once you get used to terminal vim.