Even if "this amount of time" has only passed because of delays at their end?
Applying this logic they could take years more and client would still be out of pocket. Obviously that wouldn't be ok.
Set them a deadline that you need it by, and what it is you expect, if they can't meet it (and assuming it was a reasonable one) then say you'll need your money back. Not reasonable for them to hang on to it indefinitely, but also harsh to just pull the plug without warning.