I guess the marginal effect of factor x_i is just (beta_i*yhat), where beta_i is the estimated coefficient for x_i, and yhat is the predicted value of y. It seems that the built-in distribution of y doesn't make a difference. Only the link function counts. Maybe it's always the partial derivative of the inverse link function with respect to x_i for all generalized linear models.
I figured this out by playing it in STATA.
For dataset,
/*
x1 x2 y
1 2 33.11
2 1 2.5
3 0 0.4
4 1 0.1
5 2 0.2
*/
Try commands
/*
glm y x1 x2, family(gamma) link(log)
mfx
*/
or
/*
glm y x1 x2, family(poisson) link(log)
mfx
*/
The marginal effects just follow the same rule.