R, 205 153 147 136 132 127126 bytes
-52 from Dominic van Essen.
-4 from Giuseppe.
-4 again thanks to Giuseppe.
-5 further thanks to Dominic van Essen
function(s,n=nchar(s),x=-n:n,r=abs(x))for(y in x*2(x=-n:n)*2)cat(ifelse((i=(t=y-2*r*2*(r=abs(x))*!r<y)*t-t-2*(r<y)*x+x+1)>n," ",substring(s,i,i)),"
")