How to work with file attachments in web service calls ?

Siebel and higher supports attachments encoded as base-64.
All you need is :

a) attachments properly working at the user interface as a pre-requisite
b) the integration object you use contains an attachment integration component.
c) You also need the 3rd party application communicating with siebel to be able to handle base-64 encoded attachments.

We do not have detailed and exact step by step procedure as this is mostly a design decision and as such is beyond scope of support.
I am glad to share ideas though and suggest the following exercise to gain insight:

1) Use the thin client.Query for an account or service request.
Add an attachment to it in the UI.
Ensure you can attach and download a file from the UI.if not, fix it first.

2) Use an integration object with the correct structure for attachments.
Some siebel versions had issues with the siebel tools wizard when creating an IO with attachments so I suggest you try a standard one and once it works you can use it as a reference for other objects.
e.g: activate and compile Sample Account.
or use Service Request IO
(once this works you can just extend your own IO to have an attachment IC with the same fields)

3) Log in to thin client.
Site map -> administration - Business service -> Simulator.
Simulate EAI Siebel Adapter, method Query and provide the input arguments:
OutputIntObjectName = Sample Account (or Service Request, or other of your choice).
PrimaryRowId = a valid row id for accounts, srs or the object you chose. This object must have an attachment.
4) once #3 works. scroll down to the lowermost applet. Click save to file.
This will save the output to file and now you have a sample message to play with and know what the attachment looks like in the XML. (SIEBEL MESSAGE at this point. not a SOAP.)

5) since the goal is to use webservices... once #3 is good, create a custom BS or a workflow that calls EAI Siebel Adapter with the specific IO you tested and publish it as a webservice.

6)To thest the web service you may want to download This is a free 3rd party tool. We do not offer support for it and have limited experience with it. You may find it usefull for simple tests though.
Import the siebel inbound web service WSDL to it.
Call the method query.
Give it a valid row id for a record that has an attachment and there you are !!! you have a sample SOAP message this time (item 3 gave you a sample Siebel message as opposed to SOAP)
The attachment should be in base-64

Edit the response message to call a different method e.g: insert and make sure the message has a new parent data (like a new account or a new SR).
Send it through SOAP UI and it should create a new record with the same attachment.

Now you know how to query and also how to insert.
Your last point of attention is :

The attachment is encoded as base-64 and there is not much we can do about it.. the 3rd party app has to be able to handle that.

Once you can get this simple example to work it should be feasible extend the idea to your existing web service.
Basically you just have to create an extra IC for attachments using a standard attachment IC as an example.