Building on Geoff's excellent idea, you could create 5 text fields in Marketo, one for each product.
Make the default value for these fields be the string "none".
When someone purchases the product, use a change data value flow step to change the value of the field to "initial".
Now on your landing page, wrap each product section in a div.
Use some CSS with a
display property on each div and specifiy the token for the lead field you just created.
E.g.,
<div style="display: {{lead.product field 1}};">Product 1 content here</div>
If the person has purchased the product, the value is "initial" which is the default display value, it should display normally.
If the person has not purchased the product, the value is "none", and "display:none" hides that content with CSS.
This should work in emails too, I think.
It's a pretty good solution if you have these 5 main products -- it's less elegant if you need to keep creating more fields for additional products. But still better than a 120 segment segmentation!