Python – 234 201
# example for defining lists and n
l=[[1,2,3,4],
[5],
[6,7,8,9]]
n=1
# counting code
j=1j
m=max(map(len,l))+len(l)
M=range(-m,m)
e=enumerate
d=[[v for x in M for i,u in e(l)for k,v in e(u)if[1,1+j,j,j-1,-1,-j-1,-j,1-j][n]*(k-(len(u)-1)/2+j*i)==x+y*j]for y in M]
print[x for x in d if x]
Ungolfed Version
rotation = [1,1+1j,1j,1j-1,-1,-1j-1,-1j,1-1j][n]
m = max(map(len,l))+len(l)
output = []
for y in range(-m,m):
line = []
for x in range(-m,m):
for i,sublist in enumerate(l):
for k,entry in enumerate(sublist):
if rotation * ( k-(len(sublist)-1)/2 + i*1j ) == x + y*1j:
line += [entry]
if line != []:
output += [line]
print output
This uses that multiplication (of a complex number) by a complex number corresponds to rotating and stretching. [1,1+1j,1j,1j-1,-1,-1j-1,-1j,1-1j]
are complex numbers corresponding to the required angles and using the smallest scaling factor such that for an integer complex input the output is again integer complex.