I generally use WD40 for most of it (painted surfaces etc)
I use throttle body cleaner for my block and any areas that are metal and greasy. (don't use this on painted surfaces, leave the WD40 for those)
I use silicone spray for anything rubber/plastic and then spray the rubber surfaces with 303 protectant (ie. air intake piping, radiator hoses, spark plug leads etc)
I've been doin this on my honda engine bay since i got it and it hasn't aged a bit. Radiator hoses look brand new.
PICS of engine bay:
Sorta dirty when working on her (wire tuck yO!)
after finishing and cleaning with above method: