If both machines are on the same LAN, ideally right physically right next to each other, you can use IP address takeover. This is where the primary machine has the IP address, and the secondary monitors it. If the primary stops responding the secondary brings up an interface for the IP address ('takes it over') and does some ARP magic. When the old primary comes back on line it becomes the secondary.
The machines should have two connections (ethernet and null modem for example) to prevent a network error causing one to incorrectly think the other is down.
The switch time is something like 5 seconds.
Look at Heartbeat:
http://www.vergenet.net/linux/redundant_content/related/linux-ha/High-Availability-HOWTO-8.html
http://www.linux-ha.org/
At work we are looking at Zeus's ZXTM which is essentially a commercial version of hearbeat with dispatching, web gui, and other niceties.
As to whether this is something Linode would want to setup for you, I'm not sure. IMHO if your application requires that kind of availability you probably don't want a virtual server anyway.