This is a very broad question, but here are some pointers. To protect against hardware failure you will want to investigate load balancing (I use ldirector) and/or Heart beat. It does mean you will need another more-or-less identical host to act as a stand-by.
While they are designed for different things, from a high availability stand point they can accomplish much the same. Heartbeat allows a pair of servers to monitor each other availability, and will switch services (Such as a web server) to which ever host continues to run.
Load balancing can achieve a similar setup by removing "dead" hosts from the pool. There's a good starter tutorial on heartbeat here: http://www.linuxjournal.com/article/5862 and this http://www.howtoforge.com/set-up-a-loadbalanced-ha-apache-cluster-ubuntu8.04-p3 deals with ldirectord on ubuntu (Although not the version you are using)
I use a good 30minute+ backup system to ensure power failures less than 30 minutes don't affect my website
Fine, but how long will it take to restore your backup?
I am also hosting at home so having a redundant network is not possible. If my landline fails, the server goes down. However that doesn't bother me. Data centers can go offline due to network problems so i'm not worried about that.
Of course, no where is bomb proof, but odds are that a DC's availability will be vastly better than that of a home broad band connection. DC normally have (or at least should have) Many redundant internet connections, backup power, flood protection and slew of other redundant systems to keep everything running.
If you want to improve the reliability of your site, getting a VPS or a rented server off one of the many providers out there, is probably your easiest option.
Good luck with your project.