In a word, yes.
Here's one scenario where it was necessary to sleep for a specified number of seconds:
The application could display credit card numbers to a small number of users who had the privilege to view secured data. The display window was designed to log who viewed the data and which transaction was being viewed; and to close itself after a configurable length of time.
My scripts would set the display time to a short enough value that the delay wasn't excessive, then open the secured data. At this point the script would sleep for the length of the display time, then check that the form no longer displayed.
With the tool I was using at the time, this was the simplest and cleanest way to verify that the display time was being honored.