Выражение происходит от народной русской пословицы «дожидайся Юрьева дня, пока рак свистнет», впервые зафиксированной в 1848 г.
Если верить сделавшему это этнографу А. В. Терещенко, по народной легенде в этот день рак свистит (хотя независимых подтверждений её существования нет).
Видимо, пословица отражала иронию крестьян, для которых Юрьев день был очень долгожданным в связи с тем, что до крепостного права у них была возможность переходить от помещика к другому после окончания осенних сельхозработ.
Форма выражения «когда рак свистнет» отмечается с 1857, распространение в печати получает после включения в «Пословицы русского народа» Даля (1862).
В современной форме фиксируется с 1911.