If all you want to do is to wait for a process to finish, you should probably not use sleep-for
at all. Instead call the process synchronously, not asynchronously:
http://www.gnu.org/software/emacs/manual/html_node/elisp/Synchronous-Processes.html#Synchronous-Processes
This way, Emacs will block until the process has finished.
If you must (or really want to) use an asynchronous process, for instance because it takes very long and you don't want Emacs to freeze during that time (you speak of 60 seconds, which is quite long), then the right way to wait for the process to finish is by using a sentinel. A sentinel is a callback that gets called whenever the status of a process changes, e.g., when it terminates.
(defun my-start-process ()
"Returns a process object of an asynchronous process."
...)
(defun my-on-status-change (process status)
"Callback that receives notice for every change of the `status' of `process'."
(cond ((string= status "finished\n") (insert "ZZZ"))
(t (do-something-else))))
;; run process with callback
(let ((process (my-start-process)))
(when process
(set-process-sentinel process 'my-on-status-change)))