VSync solves tearing issues, but judging by your description of the issue "huge line covering 10% of my screen height", this does not sound like it is exclusively due to tearing. Either blank frames are being drawn in unsynchronized frames every now and then or something is wrong with your code. If you are willing to share a bit of code, I'm sure people will be able to spot faults in it if any exist.
Also, you should really unlearn the habit of referring to what you are witnessing as "input lag". It is true that media and more specifically gaming media refer to it as "input lag", but as a developer you are capable of better understanding what is happening.
One of the things with 3D rendering APIs is that they work using command queues. You command the GPU to do things... in the future. How far in the future depends on the situation. Obviously, commands are only removed from the front of the queue once they have been completed by the GPU. Any attentive reader would now ask: what happens if I issue commands faster than they can be completed? Well... the commands start to back up, to the point where they can only be completed multiple frames in the future. Obviously the engineers already thought of this problem and imposed a limit to how large the queue can become. Issuing commands once the queue is full will just block your application code until there is space again.
So... now that you know that the "lag" comes from the rendering side and not the input side, it might be a bit more obvious how to fix it. Enabling VSync doesn't slow down the source of the commands - your code - it just slows down the completion of the commands - the driver and GPU. To slow down the source, you would have to enable the framerate limiter in addition to VSync. Some people say it should be set equal to the VSync interval, some people say it should be less, as always it all depends. Also, there is no universal way to probe for the VSync interval, so there's that...
If you are hellbent on truly getting as low of an input lag as possible, you would have to make input polling independent of the drawing. Contrary to popular belief, it is possible to have game engines run faster than they can draw if the hardware allows. In this case, input would be polled every frame with "unlimited FPS" and the engine state updated as well. The graphics and drawing would only take place every 1/60 seconds or however long it takes the monitor to refresh, so if the engine is running at 120 FPS, that would be every second frame. Doing this, operating system input events would be buffered for as short as possible and have their effect on the game state in as little time as possible. This, is minimal input lag, not that garbage perpetuated by the media.
Also, if you want your cursor drawing to completely bypass the 3D graphics pipeline, you would need a so-called "hardware cursor" (misnomer if you ask me). SFML does not support hardware cursors yet,
but work is under way to get them implemented soon.