I can't remember the product name, but I use an engine cleaner, just about any kind will do the job. One that comes to mind is Gunk brand.
First I warm up the motor, take it for a quick spin on the highway, then shut her down, remove the air filter, and spray away!
Let stand for about 15 minutes, if needed, scrub really dirty areas with a brush, then hose off. Try not to get too much water on the motor, especially the electrical systems.
Then restart your engine, let it run to get as much water to evaporate, around 5-10 minutes, then towel off wet spots, don't forget the air filter box!
To finalize the clean look, as it will appear dry, I use Armor All tire foam. Coat engine, walk away, and voila! nice shiny clean motor!
Just another thing I have done with all my past cars, motor seem to like being clean, seems to run smoother, or it could just be me!? Looks like a million bux too, never know it was 4 years old with 70k on it!