It appears that unpivot sets the sort order according to the order given in the IN clause, which is what you want anyway.
If you don't trust that, or something more complicated is going on, the simple solution is to use a CASE statement on activities in your order by clause.
example (you can validate it by mixing up the order in your in clause with and without the extra sort).
WITH myCTE as (
SELECT 2013 AS BoundOrLostYear,
CAST(29544.48 AS MONEY) AS TotalNew,
CAST(-10832.00 AS MONEY) AS TotalLost,
CAST(18712.48 AS MONEY) AS Netgain
SELECT ActivityYear,Activities, Activity
SELECT BoundOrLostYear AS ActivityYear ,
UNPIVOT(Activity FOR Activities IN (Totalnew, TotalLost,NetGain )) b
order by ActivityYear desc, CASE Activities WHEN 'Totalnew' Then 1 WHEN 'TotalLost' Then 2 WHEN 'NetGain' THen 3 END