Claim: Let $L \subseteq \Sigma^*\{\#\}\Sigma^*$ be a context-free language, where $\# \notin \Sigma$. Suppose that for each $x \in \Sigma^*$, $\{y|x\#y \in L\}$ is finite. Then $\{y|\text{ for some } x\in \Sigma^*, x\#y \in L\}$ is a regular set.
I need to prove the above claim.
Since for each $x \in \Sigma^*$, $\{y|x\#y \in L\}$ is a finite set by assumption, we see that $\{y|\text{ for some } x\in \Sigma^*, x\#y \in L\}$ is also a finite set. Since every finite set is regular, $\{y|\text{ for some } x\in \Sigma^*, x\#y \in L\}$ is a regular set. Can this be a valid proof?
Your argument has a flaw. Consider for instance the language $L = \{a^n\#b^n \mid n \geqslant0\}$. Then, for each $x \in \Sigma^*$, there is at most one $y$ such that $x\#y \in L$. However, $$ \{y \in \Sigma^* \mid x\#y \in L \text{ for some }x \in \Sigma^*\} = \{b^n \mid n \geqslant 0\}. $$ Indeed, if $y = b^n$, there exists some $x \in \Sigma^*$ (namely $x = a^n$) such that $x\#y \in L$.