Try something like this:
SELECT contacts.contact_id,
contacts.firstname as First,
contacts.lastname as Last,
GROUP_CONCAT(DISTINCT IF(activities.rowid = MAX(activities.rowid),visiondescription,NULL)) AS Subject
GROUP_CONCAT(DISTINCT IF(activities.rowid = MAX(activities.rowid),smsreceived,NULL)) AS `Date`
FROM activities, contacts
WHERE activities.contactid=contacts.contactid
AND activities.accountid=contacts.accountid
AND activities.accountid = 'AAXA-S0BJ7I'
GROUP BY contacts.contact_id;
The idea here is that the needed information pertains to the user and so the GROUP BY needs to be against the user. The GROUP_CONCAT will pick out only that row among the grouped rows that meeds the IF condition.
-- just a thought