Seasonal trends in infectious diseases are shaped by climatic and social factors, with many respiratory viruses peaking in winter. However, the seasonality of COVID-19 remains in dispute, with significant waves of cases across the United States occurring in both winter and summer. Using wavelet analysis of COVID-19 cases, we find that the periodicity of epidemic COVID-19 varies markedly across the U.S. and correlates with winter temperatures, indicating seasonal forcing. However, the pattern of multiple waves per year that has been so disruptive and unique to COVID-19 cannot be explained by seasonal forcing. Using a modified SIRS model that allows specification of the tempo of waning immunity, we show that specific forms of non-durable immunity can sufficiently explain the sub-annual waves characteristic of the COVID-19 epidemic.