The first place I would check would be if it provides similar features to xterm (which can do this). In a quick check, iTerm2 does not implement any of xterm's controls for coloring the cursor. But (quoting from its documentation) iTerm2 supports a cursor-coloring feature (as an option) which (like xterm) does what you want:
To tune smart cursor color settings:
defaults write com.googlecode.iterm2.plist SmartCursorColorBgThreshold -float 0.5
defaults write com.googlecode.iterm2.plist SmartCursorColorFgThreshold -float 0.75
SmartCursorColorBgThreshold: If the cursor's background color is too close to nearby background colors, force it to the "most different" color. This is the difference threshold that triggers that change. 0 means always trigger, 1 means never trigger.
SmartCursorColorFgThreshold: The cursor's text is forced to black or white if it is too similar to the background. If the brightness difference is below a threshold then the B/W text mode is triggered. 0 means always trigger, 1 means never trigger.