Eftersom du har distinct så kan du bara sortera på sådant som finns med i select-listan.
Om @sort innehåller kolumnnamn så:
CREATE PROCEDURE spListUserPay2
@sort as varchar(20)
AS
SELECT DISTINCT Users.idxUser,
Users.Title,
Users.Name,
Users.SurName,
Users.BusinessName,
Users.Address1,
Users.Address2,
Users.Address3,
Users.City,
Users.PostCode,
Users.Email,
Users.expiryDate,
Users.betalatAbb,
Users.tempAccess,
Users.campaign,
Users.abonnemang,
abonnemangstyper.beskrivning,
Users.CreatedDate,
Campaigns.Name AS CampaignName, Campaigns.Months,
Users.hantering, Invoice.Makulerad,
case @sort when 'Title' then title
when 'Name' then name end
as sort
FROM Users INNER JOIN
abonnemangstyper ON abonnemangstyper.idxAbonnemang = Users.abonnemang INNER JOIN
Invoice ON Users.idxUser = Invoice.idxUser LEFT OUTER JOIN
Campaigns ON Users.idxCampaign = Campaigns.idxCampaign
WHERE (Users.accepted = 1) AND (Invoice.Makulerad = 0) AND Invoice.Paydate = NULL
ORDER BY sort
GO
Det går så länge alla kolumner som du vill sortera på är av samma datatyp.