私はこのコードをテストしていません (この応答にフリーフォームしただけです)。
テキスト入力の keydown メソッドでは、バックスペース キーをリッスンする必要があります。
var input = document.getElementById('myInput');
input.onkeydown = function() {
    var key = event.keyCode || event.charCode;
    // Detect Backspace (8) & Delete (46) keys
    if( key == 8 || key == 46 ){
       var caretPos = getCaretPos(input);
       // Read backward from the caret position
       // until you hit a space or index 0:
       while ( (input.value[caretPos] != " ") && (caretPos > 0)  ){
          caretPos--;
       }
       // Once you hit the space or index 0, read forward two characters 
       // to see if it === "@@".  If both chars are "@", cancel 
       // the keydown event.  You should probably do some bounds checking
       // here.  Could also be done with String.subtring
       if ( input.value[(caretPos + 1)] == "@" && 
            input.value[(caretPos + 2)] == "@" )
       {
          return false;
       }
    }
};
function getCaretPos(input) {
    // Internet Explorer Caret Position (TextArea)
    if (document.selection && document.selection.createRange) {
        var range = document.selection.createRange();
        var bookmark = range.getBookmark();
        var caret_pos = bookmark.charCodeAt(2) - 2;
    } else {
        // Firefox Caret Position (TextArea)
        if (input.setSelectionRange)
            var caret_pos = input.selectionStart;
    }
    return caret_pos;
}
参考文献
バックスペースを検出
キャレット位置を取得
キーダウン イベントをキャンセルする