Python 180 172 171 163 146145 Bytes
(-2 Bytes with Python3)
def r(m,n,x,y,t): s=([' ']*m+['\n'])*n;a=b=1 for c in 'o'*in'o'*(t-1)+'x':s[x+y*m+y],x,y=c,x+a,y+b;a*=2*(0<x<m-1)-1;b*=2*(0<y<n-1)-1 print''.join(s) To save 2 more bytes with Python3 (thanks to shooqie) replace second line with
s=[*' '*m,'\n']*n Had to use a list of characters because python does not support string item assignement. The x+y*m+y part is from x+y*(m+1) because of the '\n' add each line end
Edit1: right after posting, saw how to get rid of the overwriting 'x'
Edit2: space after print
Edit3: using < and > instead ==, also tabs for 2nd indentation
Edit4: Replaced the if statements with assignements, daisy-chaining less-than and placing the loop in one line (thanks to RootTwo)