The best way to do this is usually to do the load balancing inside your network where everything's under your control, eg with a load balancing proxy, a floating IP or internal routing. However, if these servers are on different unaffiliated networks as you say, this is generally not practical.
The other method to achieve this is using DNS failover, but it's not as reliable to update. Simply, your DNS servers will need to monitor the two servers, and return the A records when they're online, eg typically www.domain.tld would return A records for both server 1 and 2, but if 1 was down it would only return 2.
This is not trivial to set up with most DNS servers, and there are reasons why there aren't many tools around for it. The A records must be set with a very low TTL (eg 5 min not the more standard 1 day) so these responses aren't cached too long in case the server status changes.
Most of the tools I've seen to host it yourself are for the database-driven PowerDNS server, or you can pay for a DNS provider to run it for you. See http://serverfault.com/questions/60553/why-is-dns-failover-not-recommended for more on DNS failover.
As far as the content goes, that's a whole other issue, and depends on how the content is generated. If it's database driven, you'll first need to replicate the databases (you probably want master-master replication), but otherwise, the code free option is to use a tool like rsync on a regular cron.
Just because you set up a theoretically redundant configuration, doesn't mean you'll necessarily increase the uptime. For example, if one of your servers is much more reliable than the other, it may be better to use this as a hot spare if load sharing is not a priority.
Regardless of how you set up DNS failover, users can try to connect to a down host in the period before it's checked or DNS is updated, and then your query can be cached by the TTL by the end user ISP, and some of these run slow caches, which can delay this even further -- it's not a simple or pain-free solution, and it's far from perfect