Creating crosstab() pivot table in PostgreSQL 9.0
Your table definition says

...
ageband character(12),
...


which means the values in there look like '18-24       ' instead of '18-24'.  This way, the items from the VALUES list do not match the values in the table, therefore you get an empty table as result.  

If you change the column type to a bit more senseful text (which trims the values, too, as Erwin points it out):

ALTER TABLE activities_in_localities_asc ALTER COLUMN ageband TYPE text;


you will get your desired results.