Try outdoor fabrics like Sunbrella - they are relatively indestructible. Also, leather and suede are very durable especially if you don't need your sofa to look pristine - it'll scratch but that'll add to the "patina". I've heard Ultrasuede and microfibre are also good, but I would recommend going to Joannes and buying a yard of it to test on your current sofa. Drape it over the arm or back and see if it attracts your cats- in fact you could do this with other fabric types you want to test out. Another alternative is to slipcover your sofa so at least when guests come over you can whip off the destroyed slipcover and have an untouched sofa underneath. This is a toughy though, as most fabrics will be suscesptible.
I have three cats and a toddler - and two leather sofas, so that's my vote. I do try to keep my cats nails trimmed which I do myself with a big nail trimmer (the kind for people not cats). You just need to trim off the sharp tips and keep away from the pink part.
Good luck!