An alternative proof is as follows. Since $A$ is psd, $A=UDU^*$, where $U$ is unitary and $D$ is diagonal. Suppose $A$ has $k$ distinct eigenvalues, $\lambda_1 < \lambda_2 <...< \lambda_k$. Then $D$ may be chosen to be $D=\lambda_1I_{m_1}\oplus\lambda_2I_{m_2}\oplus...\oplus\lambda_kI_{m_k}$, where $m_i$ denotes the multiplicity of $\lambda_i$, and $I_{m_i}$ is an $m_i$-by-$m_i$ identity matrix. (I.e. $D$ is block-diagonal, consisting of $k$ blocks.)
Now, note that $AB+BA=0 \Rightarrow UDU^*B=-BUDU^* \Rightarrow DU^*BU=-U^*BUD.$ Letting $\hat B\triangleq U^*BU$, we have $D\hat B=-\hat B D$. Given the form of $D$, it's easy to verify that $\hat B$ must be block-diagonal, i.e. $\hat B=\hat B_1\oplus\hat B_2\oplus...\oplus\hat B_k$, where $\hat B_i$ is of the same size as $I_{m_i}$ Moreover, since $\lambda_2, ..., \lambda_k$ must be positive, we conclude that $\hat B_2, ..., \hat B_k$ must all be zero matrices. If $\lambda_1$ is also positive (i.e. $A$ is p.d.), $\hat B_1$ must also be zero. So $\hat B=0$ and $D\hat B=\hat B D=0$. On the other hand, if $\lambda_1=0$ (i.e. $A$ is p.s.d.), a direct multiplication clearly also shows $D\hat B=\hat B D=0$.
Since $AB=UD\hat BU^*$ and $BA=U\hat BDU^*$, it follows that $AB=BA=0$.