Although in theory it is fine, it has to be remembered that it ties in the window cleaner too. Most of the time that may be fine but unexpected things do happen. So, in a contract you would need to excuse yourself (or staff members) for being ill, for vehicle breakdowns and for a whole host of unexpected possibilities. If you do that for yourself, it would be morally right to do it for the customer too IMO e.g. unexpected job loss, unexpected drop in income for other miscellaneous reasons (including illness). If I were a potential customer and a window cleaner wanted to tie me in that might be OK if the price and service were right. However, if he wanted to excuse himself from honouring the contract when unexpected circumstances occurred, I would want the same leeway.
Not a legal opinion of course because I'm not a solicitor. Just viewing it from the perspective of the "reasonable man".
Of course, if you have a large enough company and carry enough spare capacity to work around the unexpected, then it might work. If you have a spare van or two and spare labour to get over such problems - again it might work.
I suppose the trick would be to only have some of your work contracted in such a manner. In doing this, if the staff and van(s) were in short supply, you could always divert resources from non contracted work.
I've never done anything like this. Just putting a few things out there in case you haven't considered them.