Update image using dynamic sql
I am not sure why the procedure uses image parameters instead of varbinary(max), or why you aren't passing the parameter values to sp_executesql directly. How about:

ALTER PROCEDURE [dbo].[transact_image_update]
  @transact_recordID_int int, 
  @image1_bin varbinary(max),
  @image2_bin varbinary(max), 
  @transact_referenceNo_str nvarchar(25),
  @userID_last uniqueidentifier,
  @tableName nvarchar(50)
AS
BEGIN
  SET NOCOUNT ON;

  DECLARE @sql nvarchar(max);

  SET @sql = N'UPDATE dbo.' 
    + QUOTENAME(@tableName) + N'
    SET [image1_bin] = @i1,
            [image2_bin] = @i2,
            [userID_last] = @u
    WHERE transact_recordID_int = @t
    AND [transact_referenceNo_str] = @s
    AND locked_bol = 0;';

  EXEC sys.sp_executesql @sql,
    N'@i1 varbinary(max), @i2 varbinary(max), @u uniqueidentifier, 
    @t int, @s nvarchar(25)',
    @image1_bin, @image2_bin, @userID_last,
     @transact_recordID_int, @transact_referenceNo_str;
END