Well, Nagios has the abillity to supress notifications for servicec if a host is down. Why is that not so in your case, I don't know.
In my example, if Nagios checks service on a downed host before it checks if a host is reachable, it sends a notification, and so on for every service until it checks the host and sees it is down. Than it surpress every notification for remained services on that host.
If you want, you can create service dependencies, and put every service to be dependent on ping service. There you will define for which conditions you want Nagios to stop sending notifications.
Pls, in future, tell us the version of Nagios you're using and you could post some host/service definitions which are problematical, or errors/ouput codes you're getting.