This is a very general, sketched approach, but maybe enough to get you unstuck.
The basic structure of the back cushion can be created by sweeping a curve profile around a curve path.
- Select an appropriate edge loop of your chair, duplicate it, separate it to a new object,and convert it into a Curve. That's your path.
- Make a profile curve to be swept round it, bearing in mind that its own Z-axis will be the one following the path,and its origin will lie on it.
- Assign the profile curve as a Bevel object for the path. While it's still a swept curve, you can still edit the profile. The illustration shows the Data tab > Geometry panel for the path.
Convert back to a Mesh. Possibly working under a Mirror modifier..
- Grid Fill the open ends of the sweep. you need an even number of vertices in the perimeter for this.. you may have to add or delete an edge-loop to get that, and use Proportional editing to puff the front of the arm out a bit, when it's filled.
- Select a set of faces which can be duplicated to form the back and sides of your base cushion, duplicate, and separate off to a new object
- Bridge Edge Loops the front edges,of the base-cushion rim, choosing the number of cuts to give you an even number of vertices in the perimeter, so you can ..
- Again, grid fill the top. Select a central vertex, and under Proportional Editing, pull it up to plump up the base cushion a bit.
See what it looks like under a Subdivision Surface modifier.
The whole thing would then need tweaking, loops removed or added, edges made crisper or reshaped, maybe seams put in, etc. But so long as the basic topology is good, and you don't have too much geometry, it should be a pleasant job.
If you need to weld the base and the arms together, you can bridge some of those edge-loops together easily enough - they started off as duplicates, so their topologies will match.
Supplement: Creating the profile curve.. with Transform Pivot set to 3D Cursor ...
- Create a Curve > Circle. It's a Bezier curve, by default.
- CtrlX dissolve the leftmost control point
- Select the two points on the left, and V convert their type to Vector
- Select the bottom left point, and ShiftS snap the cursor to selected.
You can move the handles about to adjust the curve with the usual constraint options, (GX, GY, etc.) snap them to the grid, use the cursor as pivot point for scaling, and so on...
- When you're done, in Object Mode, ShiftAltX > Origin to 3DCursor. The origin will lie on the sweep path.
In the profile's Object Properties tab > Viewport Display panel, switch on 'Axis' to check that the object's Z will point along the path. If not, rotate the whole curve in Edit mode by 90 in whatever, until it will.
You can assign it as the Bevel object to the path curve in the path's Data tab > Geometry panel,as shown in the top illustration.