Is there a computer which can simulate all computers? I have looked for proof that a machine cannot compute itself in more than realtime (Which would allow infinite computing speed) and I came to the conclusion that it is impossible for any computer to simulate all other computers. However, I lack proof of this intuition. 

So the idea is that the state of every (modern, non-quantum) computer can be represented as a finite bitstring (just every state of registers, memory cells, and hard-drive...). However, in order to predict what this computer would do given any state, you would need a longer or at least equally long (in some trivial cases this might work) bitstring. But since there is always a bigger computer (with a longer bitstring - representation) there is no computer which can compute all computers. 

However, I am wondering about the following:

Let $f$ be a function which maps a computable function $g$ and a valid input $i_g$ of that function $g$, to the result of $g$ given $i_g$:

$$f(g,i_g) = g(i_g)$$

Can you proof that:

$$\exists i_f: f(f, i_f)  \mbox{ does not halt, while } f(i_f) \mbox{ does.}$$

Note that $i_f$ is just a bitstring, and $g$ can be represented by a program and therefore can be a bitstring too...
Your intuition sounds wrong to me.  It's not surprising you couldn't prove it, because it isn't true.  Roughly speaking, it is possible to find a computer that can simulate all other computers.

A universal Turing machine can simulate any other Turing machine, and can be used to simulate any other program in any Turing-complete language.  Thus, there is a reasonable sense in which it can simulate all other computers, if we make precise what we mean by "computers" in a particular way (e.g., if we accept the Church-Turing thesis).

If you want to know whether it is possible to simulate another computer and also do it faster, that's a different matter.  You'd have to formalize what you mean by "faster" to make that question well-defined.

Your question at the end of the post is not well-formed; computability is a property of languages, not of a single value (like $f(f,i_f)$).  Also, you defined $f$ to be a function of two arguments, so $f(i_f)$ doesn't type-check.