You can do it with an Array modifier with an empty as Object Offset, just move, rotate and scale the empty a bit, then you'll need to edit the mesh so that the instances stick to each other:
Another solution is an Array along a spirale curve (that you can create with the Add Curve: Extra Objects addon, then ShiftA > Curve > Curve Spirals > Archemedian, then tweak the parameters in the Operator box), and you gradually scale down the vertices radius of the curve from bottom to top: