Put your complaint in writing. Highlight the date you have been calling since, and the names, or at least positions, of any people you've been talking to (especially the engineer). If they don't reply in say 4 weeks write again, to somebody higher up in the company, enclosing a copy of the original letter. If they send you a generic reply but no action has actually been taken, enclose a copy of that in your next letter too. If you have an email address you can also send PDFs of your letters (and enclose copies of that in the next letter too).
Basically put and get everything in writing and keep escalating. A phone call is pretty much your word against theirs and way too easy to ignore.
In addition to above, if you're on Twitter you should complain and address your tweet to their own twitter account (put a space or a full stop in front of the @ to make sure everybody can see it). Something along the lines of ".@harveynormanIE why won't you respond to my complaints about my faulty sofa? Have been phoning for months now. #unhappycustomer #fail".
Many companies are much quicker to respond to complaints on Twitter as they are public, and they like to be seen to be very responsive. The corollary of this is that you should also use Twitter to post praise for companies (or bars or restaurants or whatever) when you've had a good experience. In fact posting something nice like that can make your own day, as well as theirs.