First contact => email or phone call with basic description of project/solution/problem.
Scheduled meeting/phone talk to discuss project details.
Detailed project specification is being created or delivered by the client.
Based on documentation solution is being developed. Client can view project progress on daily/weekly basis (depends on complexity of functionality - once certain functionality is being done so the client can test it). All new ideas or changes based on daily review and testing will be used to develop better solution.
Once certain or all functionality is being delivered and accepted by the client (depends on project size) payment is being made (on mothly basis). After payment is received (wire transfer, PayPal) all source codes for the project are sent to the client.
All possible bugs (software issues) are fixed without any additional payment (bugs caused by wrong documentation requirements are treated as additional development).