I learned too late what works -- my sofa is already a goner. But here's what I have in mind for the future:
I think what attracts kitties to sofas and chairs that they're large and heavy enough to provide a good stretch and some satisfying resistance when the kitties scratch. Therefore, PRIOR to getting a new sofa, I plan to give my kitties an ideal place to scratch -- not just a two-foot sisal post that tips over every time they touch it, but a tall, immovable object with both sisal and carpet to choose from. A large cat tree, maybe, or just a couple of wide, wrapped boards bracketed firmly to the wall at a bit of a slant.
Just to increase the chances that my next sofa might survive for awhile, I plan to get one that's not upholstered -- a wooden style with removable cushions that can be re-covered if necessary (IKEA has a nice one on their website). And I plan to use a quilted throw over the cushions, because quilted things don't seem to offer enough resistance to be attractive to my kitties.
That's my plan, anyway. Now, about curtains... has anyone found a solution there? My little Pearl not only climbs right up them, but actually LAUNCHES herself five feet off the bed, snares the curtain rod with her front paws, and swings there like a Romanian gymnast going for the gold! Which is adorable, but... AUGH! Is there any way to save my curtains?