Probably should have read this entire topic before posting but as someone who uses both languages, and has transistioned between the two over a looong period, I guess my two cents...
Some C compilers, such as C18 and mikroC produced assembly I was relatively impressed with. It wasn't too big, but inevitably much much larger than my assembly efforts - less buggy too! Almost all cases the C code (after degubbing) was obviously quicker to write and debug, although on one project the debugging confused me so much I ended up writing ~1200 lines of assembly instead - which destroyed my soul. That worked much faster, allowed me to drop the clock speed, and save power. Where time is of the essence, mikroC's built-in peripheral libraries can make a relatively complex system a snap do write and debug in under an hour, including graphic LCD routines, and general test hardware.
These days, low pin count 16F's, or 12F's, I'll still write assembly 50% of the time as I generally use those for timing generation, or more complex tasks where program space is at a premium. For 18F's, I/we are spoiled by 32kwords of program space and up to 40/60MHz - so the compiler can do a crappy job and I don't care
I should point out that, for AVR's, the assembly language confused me so much, I went straight to C, and given virtually the same code, the winAVR C compiler generated code was much smaller, and quicker. But I guess thats because the hardware is optimised for it.
I prrrrobably just echo'd what has been said already. But I swear this topic comes up every few months somewhere