You can't use in
if these are being passed as parameters. The easiest way is to construct a query string that creates the above query. This also has the advantage that Oracle can take advantage of indexes for the query.
You can express what you want to do using string operations as well:
select *
from Test_Table
where (:v_countries = 'ALL' or ','||:v_countries||',' like '%,'||country||',%') and
(:v_regions = 'ALL' or ','||:v_regions||',' like '%,'||region||',%');
However, I would recommend that you use application logic to create the correct where
clause rather than using this trick.