The problem with your proof is that linear functionals defined by specifying their value on a Hamel basis have no reason to be bounded in general.

For example, in this case, if you extend ${x_0}$ to a Hamel basis ${x_0} cup {x_i: i in Lambda}$ then there could e.g. be linear combinations of the type $x_0 + sum_{i in I} lambda_i x_i$ with very small norm (where $I subseteq Lambda$ is finite). This is a problem since $f(x_0 + sum_{i in I} lambda_i x_i) = f(x_0) = 1$ and so $|f| geq |x_0 + sum_{i in I} lambda_i x_i|^{-1}$ which gets very large as $|x_0 + sum_{i in I} lambda_i x_i|$ gets small.

I think you will run into a problem with $f$ being continuous.

In case you have a sequence of linear combinations of Hamel basis which do not have $x_0$ as summand but converge to $x_0$ then the limit of the $f$ values of these linear combinations will be zero and not one.

**Addendum**:

As an example that a functional constructed using a Hamel Basis for its definition and which is not continuous, let us consider an infinite dimensional Banach space $X$ having a Hamel Basis $mathbb{H}$. Let us consider the family of projections $pi_h:Xtomathbb{R}$ where $hin mathbb{H}$. For fixed $h_0$ these are defined for any $x$ which will be represented as unique finite sum $x=sum_{hinmathbb{H}}alpha_hh$ with appropriate $alpha_hinmathbb{R}$ as $pi_{h_0}(x)= alpha_{h_0}$.

Then there is at least one $pi_{h}$ which is not continous.

You can see that by taking a countable subset of $mathbb{H}$, say $h_0, h_1,… $ and consider

$$x=sum_{k=0}^infty frac{h_k}{2^k||h_k||}$$

By construction $x$ is not a finite linear combination of the ${h_k}$.

So for all $kinmathbb{N}$ we have $pi_{h_k}(x)=0$. On the other hand, if all $pi_{h_k}$ would be continuous then we would have for all $kinmathbb{N}$ : $pi_{h_k}(x)=frac{1}{2^k||h_k||} >0$, which is a contradiction. So at least one projection will be discontinuous.

Rhys and Maksim have both given excellent answers pertaining to the issue of continuity presented by your construction, but I believe it should be pointed out that, even if your construction worked, it would in fact be no less “overkill” than using Hahn-Banach. In the context of foundations your method is even more “overkill”. The statement that every vector space has a Hamel basis is in fact equivalent to the axiom of choice over $mathbf{ZF}$, whereas Hahn-Banach can be proven in $mathbf{ZF}$ + the ultrafilter theorem, which is a strictly weaker axiom than choice.