killing httpd spawns new processes

This daemon doesn't start by default on OS X, so the stop procedure depends a bit on how yours is configured to start. Have you tried issuing apachectl stop to see if that is sufficient to unload the launchd job?

You can read up on the default starting and stopping of httpd via the apachectl tool on the manual pages (locally or online) .