They cannot charge you a fee to get out of the contract.
They may be entitled to a notice period but of the notice period is not specified in the contract, it must be reasonable and that would probably be one month.
If they are carrying out this maintenance and you were told that you needed a new shower whereas in actual fact you didn’t, they are in breach of the provisions of the Supply of Goods and Services Act for failing to carry out the job with reasonable care and skill. They are also in breach of contract and if this costs you money, you are entitled to damages (compensation) from them.
My suggestion would be to write to them with a cheque for a smaller sum (perhaps £200), don’t make an offer and don’t ask them to reduce the fee. Tell them that you are offering this sum in full and final settlement of any claims that they have against you and that by cashing it, they are accepting it as such. I would also tell them that if they don’t accept it, they should return it to you without banking it.
They are likely to simply put the cheque in the bank and in the event they decide to chase you for the money, you can produce your letter and the cash to check as proof of what was agreed.
If you think they are so incompetent that you don’t want to pay them anything, they are going to have to sue you in the Small Claims Court and you are going to have defend them and to counterclaim for any losses that you have incurred as a result of their incompetence.
If this fee of £800 or so that they are charging is in respect of a period of time until the end of the contract, they are not entitled to recover all of that money if they have not provided the service but what they would be entitled to at best is their lack of profit that they would have made had they provided the service.
I agree that a solicitors letter may have more influence but in that respect, you would probably be better using a local firm
Can I clarify anything for you?