Much of this will require hand coding to accomplish and will go beyond what I can help you with here.
If you need assistance with adding these changes, we can help in a premiere support appointment.
for the out of stock opacity, much like you have an if statement to show the out of stock message, use the same type of if stament to add an out of stock class to the product div. in this class definition, set the opacity for the div.
the category description text can be accomplished by creating a recordset to lookup the selected category, use that recordset to show the category description.
Suggested items, you will need to create a table that defines those items, and use a recordset to show them on the page. for recently viewed items, you would need to set a cookie each time the user views an item and use that cookie to return the recently viewed.
changing image on hover, you would need to code a javasccript function to do this. here is one of many tutorials available through google on this:
http://acmeous.blogspot.com/2008/07/simplest-way-to-change-images-on-mouse.html