I think it's because you haven't followed the instructions in exactly the way pydanny intended.
Your problems is you have a template called admin/change_form.html which is extending a template also called admin/change_form.html, and so django gets stuck in a loop.
pydanny wants you to have your template called "appname/admin/change_form.html", where appname should be one of your apps (an app has a models.py and is listed in INSTALLED_APPS).
You have two ways out:
One is to move your change_form.html into the templates directory for one of your projects' apps:
mkdir -p /home/matmock/netmag/appname/templates/appname
mv /home/matmock/netmag/templates/admin /home/matmock/netmag/appname/templates/appname
and change the entry in admin.py so it now says appname/admin/change_form.html. You have to subsitute "appname" for the actual name of one of your django apps.
Two is maybe to put the template into a subfolder, like this:
mkdir /home/matmock/netmag/templates/my_admin
mv /home/matmock/netmag/templates/admin /home/matmock/netmag/templates/my_admin
and then change admin.py to say "my_admin/admin/change_form.html". This second one is a bit simpler maybe, but it's also different from what pydanny wants you to do, so if you're trying to follow the rest of his instructions, it will get confusing, so I recommend the first way.
Probably all this comes from the confusion between the django concept of a "project" and an "app". A project is your whole website code, whereas an app is just a part of it, and a project can contain many apps. It's easy to get mixed up.