La predicción es sólo una combinación lineal de los coeficientes estimados. Los coeficientes son asintóticamente normales, por lo que una combinación lineal de esos coeficientes será también asintóticamente normal. Así que si podemos obtener la matriz de covarianza para las estimaciones de los parámetros podemos obtener el error estándar para una combinación lineal de esas estimaciones fácilmente. Si denoto la matriz de covarianza como $\Sigma$ y escribir los coeficientes de mi combinación lineal en un vector como $C$ entonces el error estándar es simplemente $\sqrt{C' \Sigma C}$
# Making fake data and fitting the model and getting a prediction
set.seed(500)
dat <- data.frame(x = runif(20), y = rbinom(20, 1, .5))
o <- glm(y ~ x, data = dat)
pred <- predict(o, newdata = data.frame(x=1.5), se.fit = TRUE)
# To obtain a prediction for x=1.5 I'm really
# asking for yhat = b0 + 1.5*b1 so my
# C = c(1, 1.5)
# and vcov applied to the glm object gives me
# the covariance matrix for the estimates
C <- c(1, 1.5)
std.er <- sqrt(t(C) %*% vcov(o) %*% C)
> pred$se.fit
[1] 0.4246289
> std.er
[,1]
[1,] 0.4246289
Vemos que el método "a mano" que muestro da el mismo error estándar que el reportado a través de predict