Stick bike in workstand
Remove wheels and chain
Degreaser on the chainrings, stiff brush best to have a dedicated one for these jobs, repeat untill acceptably clean.
Bottle of cleaner (fenwicks etc), spray all over bike, leave for a few minutes to soak in.
Car shampoo + warm water + stiff brush (a clean one), gets all the mud and grime off, then repeat with a sponge.
Chain in a big jar or white spirits (family sized curry/pasta sauce works best). The spirits can be re-used indefinately, the crudd settles out.
Take the oily job brush and degreaser to the cassette (careful not to spray into the freehub), if you're really fussy then run a rag betweeen the sprocets.
Clean the rims/spokes/hubs/tyres etc.
I usualy only do that once a month or if something's broken and needs replaceing. Otherwise it's a bottle of fenwicks sprayed on post ride, banter/beer, then dirtworker.