Yes, I have often said that you should never, ever throw (significant amounts of) code away and start from scratch. I have worked on two bodies of legacy code before and more or less used most of the techniques discussed in the comments, but this is unprecented - for me - in both size and badness. Client and I have agreed that I will work for a month and then see where we stand... I'm hoping that after a month I will have a better feel for whats going on and can outline either a staged or complete rewrite.
Lots of great advice in here, has lifted my spirits a bit. Especially getting complete client buy in (which I have internalised but I guess haven't expressed, either to myself or the client).
That's a good approach. Remember, it isn't your problem. It is your client's problem. You are there to help solve his problem. If he doesn't care enough you certainly shouldn't.
In a month you'll know a lot more about what you might be walking into. It is critical that you client also learn what he has to contend with. In other words: Communicate profusely throughout the process.
Lots of great advice in here, has lifted my spirits a bit. Especially getting complete client buy in (which I have internalised but I guess haven't expressed, either to myself or the client).