For the proposed problem I suggest the following:
Denote by C the canonical map from E to E*. The map that sends a basis of E (as a subset of Edim(E)) to its dual familly in (E)dim(E) maps a basis of E to a basis of E^E* (I'm not a specialist in categories but I would say it looks like a contravariant? functor when we take for the morphims the isomorphisms of E and E)E*). Therefore dim(E*) = dim(E) = dim(E).
Let x be in E such that f(x)=0=C(x)(f) for all f in E*
then if x is not 0, for any Hyperlane not containing x the linear form giving the component of x in the decomposition E=H oplus Kx should always give 1 when applied to x, giving a contradiction. Therefore $x=0$ x=0 which means that the canonical map C is injective. By the first isomorphism theorem E/Ker(C) is canonically isomorphic to Im(C), therefore Im(C) is isomorphic to E and since an isomorphism maps any basis to another basis, dim(Im(C)) = dim(E) = dim(E*) and Im(C) subset E*, therefore Im(C) = EE** and we are done.
By the way, to come back to my "conjecture", another interesting example is given by the following. Suppose I have a basis e_i of a finite dimensional euclidean vector space and I want to build from it an orthonormal basis. I can use the Schmidt orthogonalization process but I must choose an arbitrary ordering in my basis, and changing this ordering changes the orthonormal basis... Is there a way to build such an orthonormal basis such that any permutation of the initial vectors is reflected by the same permutation within the computed orthonormal basis? I found an answer consisting in computing the square root of the Gram matrix of the initial basis. However I have in mind to compute this square root using a Taylor expansion of the square root, thus the computed basis is obtained only by successive approximations which is a major drawback of this algorithm compared to Schmidt orthogonalization..
Eric [edit: change latex supscripts to html ones]