Why my emails being block by yahoo and hotmail?

Your email server may be on a blacklist, might not have a proper reverse lookup record, if you're on DSL it could look bad if it's too close to dynamic ranges (even if you have a static IP on "business class DSL") and a number of other things. Check the free tools on MXToolbox.com to see if any of those apply to you. You may want to consider creating an SPF record for your domain as well. That can count in your favor in a Spam Confidence Level weighting algorithm. However, nothing can help you if you're on a blacklist. Get that checked out first.

EDIT: In addition:

  1. Check a more thorough DNSBL like http://www.dnsbl.info/
  2. Read this article about spam, newsletter emails and major email providers: http://ask-leo.com/why_is_my_mail_to_hotmail_or_aol_yahoo_etc_subscribers_not_being_delivered.html
  3. Take it up with the postmaster system at the problematic domains. I.e. http://postmaster.hotmail.com/