Here is your problem:
You use the shadow variable as an image here:
shadow = Image.load("shadow.png")
but you change it to a table here:
shadow={}
shadow.x = 30
shadow.y = 230
So in the blit command you are passing it a table which is bringing up the error.
Bookmarks