How can iodine(I) cations be produced in this reaction if no additional acid is added?
There are multiple reasons why this works.


While ethanol may be a very weak acid, there should be a non-neglegible concentration of deprotonated ethanol molecules at any time which is enough to give a nonzero fraction of $\ce{I+}$.
As $\ce{I+}$ is consumed in the reaction, protons should again be released. Unfortunately, it is only one per $\ce{I+}$, so the process is not entirely catalytic. However:
Salicylamid is a phenol and phenols are acidic. The phenol will be deprotonated and supply even more excess protons.


You should also pretend you never wrote anything about $\ce{Na2O}$ in ethanolic solution. This will happen:

$$\ce{Na2O + 2 EtOH -&gt; 2 NaOEt + H2O}$$