Are biases necessary to make neural networks universal approximators when using sigmoid activations?
No, you don't need a bias. You can have a "dummy" input (input(n+1) in your formualtion) which is always set to 1. Then the bias term is absorbed into the weights.