I use VNC, a software solution.
There are many different VNC servers and VNC viewers for Windows, Mac, and Linux that all work well with each other.
Often I use "UltraVNC viewer" on a Windows laptop to display the "screen" of a Xvnc server on Fedora on a headless server in another state. (I pipe the VNC data through PuTTY for security -- alas, this adds even more latency between clicking a button to seeing the result on my screen).
VNC advantages over hardware: I don't need to stretch keyboard, mouse, and screen extension cables from that server in another state to my desk. It works with laptops.
KVM hardware switch advantages over software: instant switching from one machine to the other; it's possible to read all the BIOS messages as it boots up and change BIOS settings; the lag from clicking on a button to seeing the result on-screen is pretty much instantaneous.