E perche` vuoi farlo con .indexOf()?

Ti consiglio lo split:
var arr = str.split(/\@/);
if(arr.length>2) alert("troppi @");
else if (arr.length<2) alert("ci deve essere almeno un @");