I think what you are looking for is a C variadic function. Something that works like g_object_set() with a Null terminated list of arguments.
Using dynamic glib containers might be a better choice. It is simpler to just pass a single pointer with your user_data to functions which is how GTK callbacks are setup. Also, I have read that variadics have some troubles and don't always work well if you call the functions from another language.