These two terms are often used very interchangeably.
High Availability typically refers to the solutions that use fault tolerance and /or load balancing in order to provide high availability of the applications. HA is essentially the ability to continue operations when a component fails – could be a CPU, memory failure, disk failure, complete failure of a server etc.. With HA, there is usually no loss of service. Clustering servers together is a form of HA, having redundant power supplies or redundant network controllers is a form of HA, having proper RAID arrays is a form of HA, having proper load balancing in place is a form of HA. The primary goal of a HA environment is uptime/providing continuous service w/o disruption.
Disaster Recovery provides increased availability. It is the process/ability to restore operations that are critical for the business to run after a disaster (human induced or natural causes example – power failure in the production site, floods, earthquake, hurricane etc.). The key difference between DR and HA is that the recovery time taken in the case of DR is typically more than a HA. With DR, there is a small loss of service while the DR systems are activated and take over the load in the DR site.
Here are some posts/articles which delve into these differences in more detail:
http://www.channeldb2.com/profiles/blogs/disaster-recovery-high
http://nexus.realtimepublishers.com/sgudb.php
http://www.drj.com/2010-articles/online-exclusive/understanding-high-availability-and-disaster-recovery-in-your-overall-recovery-strategy.html
http://gestaltit.com/all/tech/storage/bas/define-high-availability-disaster-recovery/