PHP, 104 88 bytes
for(;$i++<$argn;$a.='**',$i++>1?$o=$s.$o:1)$o.=$s=str_pad("*$a",$argn,' ',2)."
"?><?=$o;
This doesn't beat the lowest scores for PHP on this challenge, but it's just too crazy for me to throw away.
Okay, so I've golfed it to now be the lowest scored PHP on this challenge, but it doesn't change the fact that it's still crazy.
$ echo 7|php -nF hour.php
*******
*****
***
*
***
*****
*******