Without being able to see the code it's hard to be sure but my best guess is that you've placed it inside some code that's run repeatedly, leading to repeated addition of the event listener.
A better place to put it might be in adapt-contrib-pageLevelProgress.js in the function setUpEventListeners
. If you do put it there you can use the Backbone listenTo function instead i.e.
this.listenTo(Adapt.contentObjects
, 'change:_isComplete', function (contentObject) {
console.log('page "' + contentObject.get('_id') + ' - ' + contentObject.get('title') + '" completed!');
// send data to LMS about this event
});