Pivot tables allow you to manipulate and display numerical data, not strings such as "kayak", so while you can create a pivot table very easily, it will only count/sum etc. the instances of kayak, soccer etc., not display the values.
You could reformat the data to produce something that gives you an approximation of your desired output:
Name Activity Golf Kayak Soccer Spa
Bob Monday 1
Bob Tuesday 1
Marge Monday 1
John Tuesday 1
Liz Tuesday 1
(above may not display here correctly, but will show correctly if pasted into Excel using Paste Special>Text)
However, even then you would still have to use a combination of =GETPIVOTDATA and other formulae to achieve a satisfactory result. This could get quite messy due to the very real possibility of errors being introduced into the data (spelling, trailing spaces etc.). Considering this would require you to reformat the data anyway (and if you are doing this you may as well just format it as you desire), I'm guessing this may not be much use to you.
The VBA required to achieve what you want is non-trivial and would depend greatly on the exact layout of your data and what information is already known or could be pulled from elsewhere, e.g. the activities, names. If the dataset is not very large then the effort in reformatting would likely be less than attempting a programmatic solution.