More simple solution with same output:
Hi, How are you? Fine, thanks, James, Arden.
@Joseph B: Sorry I can not comment yet! So I post my answer here.
SELECT
REGEXP_REPLACE(
REGEXP_REPLACE('Hi,,How are you? Fine, thanks ,, , ,,,, , James,Arden.', ', | ,', ','), --Replace ', ' and ' ,' with ','
',{1,}', ', ') single_comma_text --Replace one or more comma with comma followed by space
FROM DUAL;
You can check this SQLFiddle