Hi there,
I think this kind of operation is possible but will require some code. I imagine two solutions:
Using the AlphaUserPoints plugin.
Indeed, we have a payment method supporting the AUP plugin which allow you to pay with points and earn points when buying product.
thus, by creating specific products (call for example 'gift certificates') you can define the number of points which will be earned.
Then, thanks to these acquired points, your customers will be able to buy partially the other selled product .
You will however have to create a plugin in order to give the points bought to a specific user.
Another solution is to create coupons and sell its. For example, you create coupons for a specific amount and send the code to the customer who buy it.
He will then be able to give it to whoever he wants. The problem here is to dynamically generate unique coupon so customers won't be able to use coupon more than one time.
Or you can try to limite the use of a unique coupon to one per customer (but this could be problematic if you customer buy more than one gift certificate).