Nick Evans opened the scoring with an early penalty before passing the ball inside to Visser, who burst through under the posts for the first try of the match, leaving the home side 10-0 up at the break.
Harlequins extended their lead further early in the second half as captain Danny Care powered across the line as the visitors struggled to keep possession.
Visser kept the points coming for the home side with his second of the match midway through the second half, cutting inside before leaping across the line.
Visser secured the bonus point for Quins a couple of minutes later, while Jack Clifford made the most of a Tom Cruse error late on, powering across from a lineout after the Exiles man was sent to the sin bin for a no-arm tackle.
Halani 'Aulika ensured that the visitors got something on the board in the final seconds, sprinting over for a late consolation try for Irish.
The result leaves Quins third in the table, while London Irish stay bottom, having lost all six of their matches so far this season.