Start by applying a nice gradient to the background.



From "Filter" menu select "Render>>Lens Flare". Apply settings as shown.




Press Ctrl+F to reapply the filter.



Create "Heart" shape using custom shape tool.



Double click the layer to open layer style window. Apply settings as shown.









Ctrl+Click to get the selection. Contract the selection by 4 pixels. Create a new layer. Apply Black to white gradient. Change layer mode to overlay for this layer.



Duplicate both the layers and place as shown. Select all the heart layers and press Ctrl+G to group.



Duplicate the group and scale down.



Duplicate the group. press Ctrl+Shift+T to scale down proportionally.



Create some spark shapes as shown. Apply some outer glow.



Duplicate the background layer. Move this layer above all the layers in layer order in layer palette. Change the layer mode to "Linear Dodge".  



Open animation window. For the first frame, keep one of the hearts from one of the groups visible and other heart from other group visible. Hide rest of the hearts.



Keep duplicating frames and hiding/unhiding heart layers randomly. For each of these frames hide/unhide different spark layers.



Press Ctrl+Alt+Shift+S to save an optimized animated GIF.  Not a bad final product uh?