I believe this filthy-where-clause-hack should do it:
WHERE
((CDate(st.BeginDate & "/2013" ) <= (CDate(st.EndDate & "/2013" ))
AND (#01/14/2013# BETWEEN CDate(st.BeginDate & "/2013" ) AND CDate(st.EndDate & "/2013")))
OR
((CDate(st.BeginDate & "/2013" ) > (CDate(st.EndDate & "/2013" ))
AND (#01/14/2013# BETWEEN CDate(st.BeginDate & "/2012" ) AND CDate(st.EndDate & "/2013")))
Pay attention that these two OR'd expressions are different in year (2013 vs. 2012). If begin-end is in chronological order, first expression is used (same year). If not, second expression is used (begins with last year, ends with current).
This however can have really poor performance. I suggest you store your dates as two separate columns and use this or similar logic to query. Only then you can take advantage of indexes.